我有这个对象:
let obj = {one: 1, two: 2, three: 3, eight: 4, five: 5}
我需要的是用 four
重命名 eight
,保持相同的值和相同的位置。我这样做了:
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 ,三:3,四:4,五: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}
如果这对于您正在解决的问题来说不够有效,我想您会以不同的方式存储数据。
关于Javascript如何重命名对象键保持值和位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61311504/