为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PIPIONE 2021-05-05 17:42:06
我正在尝试删除变量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将打印出初始值。只是让我感到困惑。我觉得我一定在这里错过了一些知识。感谢任何帮助。谢谢
查看完整描述

3 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

您可以像下面那样使用地图和传播算子


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)


查看完整回答
反对 回复 2021-05-20
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

好吧,您的问题分为两个部分。首先,console.log显示前后的值相同。发生的是,Chrome的控制台不希望跟踪对象等复杂的数据。因此,当您在控制台关闭的情况下记录变量时,Chrome只会记住该变量。然后,当您打开控制台时,它将读取该变量并将其显示在日志中。但是,如果让控制台保持打开状态并刷新页面,您应该会看到正确的值正在打印。

第二部分,存储对象以供以后使用,需要进行深度克隆。就是为什么需要这样做的原因,是详细介绍如何执行操作的帖子。


查看完整回答
反对 回复 2021-05-20
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

您的代码正常工作。请参阅此处以获取完整答案。您可以通过记录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);


查看完整回答
反对 回复 2021-05-20
  • 3 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信