我在替换对象中的键时遇到问题
let headers = ['title1', 'title2', 'title3']
let obj = {
0: ['name1', 'name2, 'name3],
1: ['example1', 'example2, 'example3],
2: ['xx', 'yy, 'zz],
}
我想做的是:
let obj = {
'title1': ['name1', 'name2, 'name3],
'title2': ['example1', 'example2, 'example3],
'title3': ['xx', 'yy, 'zz],
}
我不确定我的方法是否正确:
Object.keys(obj).map((el, index, arr) => {
headers.forEach((item, item_index) => {
arr[item_index] = item
})
})
当我console.log(Object.keys(obj))
时,我仍然得到:0,1,2
....
答案 0 :(得分:1)
在您的情况下,您不是要更改对象,而是要更改Object.keys
返回的键数组,这没有任何意义。这是您的操作方法:
const headers = ['title1', 'title2', 'title3']
const obj = {
0: ['name1', 'name2', 'name3'],
1: ['example1', 'example2', 'example3'],
2: ['xx', 'yy', 'zz'],
}
const renameObj = (obj, keys) => {
return keys.reduce((acc, key, index) => ({ ...acc, [key]: obj[index] }), {})
}
console.log(renameObj(obj, headers))
希望对您有帮助<3
答案 1 :(得分:1)
Object.values仅返回指定的obj
中的值,而Object.fromEntries允许您基于数组的两元素列表创建新对象:
let headers = ['title1', 'title2', 'title3'];
let obj = {
0: ['name1', 'name2', 'name3'],
1: ['example1', 'example2', 'example3'],
2: ['xx', 'yy', 'zz']
};
let result = Object.fromEntries(Object.values(obj).map((v,i) => ([headers[i], v])));
console.log(result);