以下是一些对象数组:
1. [{id:'1', code:'somecode', desc:'this is the description'}, {...}, {...}]
2. [{fname:'name', lname:'last name', address:'my address', email:'my@email.com'}, {...}, {...}]
我需要做的是创建一个函数,在其中传递一个数组并将它们的对象键映射到通用键,这样它们就变成这样:
1. [{key1:'1', key2:'somecode', key3:'this is the description'}, {...}, {...}]
2. [{key1:'name', key2:'last name', key3:'my address', key4:'my@email.com'}, {...}, {...}]
当我这样做时
let keys: string[] = Object.keys(this.options[0])
this.replacedItems = this.options.map(item => {
return{
key1: item[keys[0]],
key2: item[keys[1]],
key3: item[keys[2]],
}
});
它工作正常,但由于对象的属性编号不固定,我尝试了这个
let keys: string[] = Object.keys(this.options[0])
this.replacedItems = this.options.map(item => {
let i=0;
keys.forEach(key=>{
let newKey = 'key'+i;
i++
return { newKey: item[key] }
});
});
它返回一个未定义的数组... 我做错了什么?
最佳答案
采用.map
的第二个参数来获取您正在迭代的当前索引,并将其与'key'
连接起来。您还可以使用 Object.values
而不是 Object.keys
来立即获取值(因为您实际上并未使用原始键):
const options = [{id:'1', code:'somecode', desc:'this is the description'}];
const replacedItems = options.map(obj => Object.fromEntries(
Object.values(obj).map((val, i) => ['key' + (i + 1), val])
));
console.log(replacedItems);
关于javascript - 映射具有未知长度和未知键名称的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60031502/