我有这个对象:
let obj = {one: 1, two: 2, three: 3, eight: 4, five: 5}
我需要的是重命名eight
并four
保持相同的值和相同的位置。我这样做了:
let obj = {one: 1, two: 2, three: 3, eight: 4, five: 5}
let tmp = obj[eight];
delete obj.eight;
obj.four = tmp;
但显然它会返回:{one: 1, two: 2, three: 3, five: 5, four: 4}
而不是{one: 1, two: 2, three: 3, four: 4, five: 5}
.
我想将属性保存在一个键值数组上,然后重建整个对象,但这种方式效率不高,因为我不知道该对象可以存储多少个属性。对此有任何提示吗?
自 ECMAScript 2015 起,在 JS 中,迭代顺序与插入顺序相同(对于字符串和符号键)。所以你需要重新创建完整的对象:
let obj = {one: 1, two: 2, three: 3, eight: 4, five: 5};
obj = Object.keys(obj)
.reduce((a, key) => ({
...a,
[key === 'eight' ? 'four' : key]: obj[key],
}), {});
console.log(obj); // prints {one: 1, two: 2, three: 3, four: 4, five: 5}
如果这对于您正在解决的问题来说不够有效,我想您以不同的方式存储数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句