猿问

删除JSON对象中的密钥,但要保留原始密钥

我正在尝试删除变量a中的键。但是,我仍然想保留原始变量值用于其他目的。但是以某种方式,它总是会覆盖首字母a。


这是我写的代码:


 let a = [

          { firstName: 'Tony', lastName: 'Stack' },

          { firstName: 'Iron', lastName: 'Man' }

        ];


        console.log('before',a);

        delete a[0].firstName;

        console.log('after',a);

输出:

我期望第一个console.log将打印出初始值。

只是让我感到困惑。我觉得我一定在这里错过了一些知识。感谢任何帮助。谢谢


PIPIONE
浏览 143回答 3
3回答

UYOU

您可以像下面那样使用地图和传播算子let a = [          { firstName: 'Tony', lastName: 'Stack' },          { firstName: 'Iron', lastName: 'Man' }        ];        let removed = a.map(({firstName, ...lastName}) => lastName);console.log('before:',a)console.log('after:', removed)

慕田峪9158850

好吧,您的问题分为两个部分。首先,console.log显示前后的值相同。发生的是,Chrome的控制台不希望跟踪对象等复杂的数据。因此,当您在控制台关闭的情况下记录变量时,Chrome只会记住该变量。然后,当您打开控制台时,它将读取该变量并将其显示在日志中。但是,如果让控制台保持打开状态并刷新页面,您应该会看到正确的值正在打印。第二部分,存储对象以供以后使用,需要进行深度克隆。这就是为什么需要这样做的原因,这是详细介绍如何执行此操作的帖子。

婷婷同学_

您的代码正常工作。请参阅此处以获取完整答案。您可以通过记录firstName而不是整个对象来验证您的答案。 let a = [          { firstName: 'Tony', lastName: 'Stack' },          { firstName: 'Iron', lastName: 'Man' }        ];        console.log('before',a[0].firstName);        delete a[0].firstName;        console.log('after',a[0].firstName);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答