我在这里找不到答案,所以请不要写重复的答案! 我的问题如下。我有一个带有对象的数组:
Items: [
{ groups: [{…}]
id: 1
name: "Test Name"
_test: null
_test2: 0.02867696
},
{ groups: [{…}]
id: 2
name: "Test Name2"
_test: null
_test2: 0.02867696
},
]
我需要更改每个对象字段的名称,例如ID,名称为topicId和topicName。我需要保留其余数据,并返回包含更改后的对象的数组。
我写了这样一个函数来访问每个对象:
function changeFields(data) {
for (const key of Object.keys(data)) {
data[key].map(item => {
})
}
}
但是我不知道下一步该怎么做。
答案 0 :(得分:0)
您可以使用数组的map
方法来修改每个条目并重新分配。
let Items = [
{
groups: [
1, 2
],
id: 1,
name: "Test Name",
_test: null,
_test2: 0.02867696
}, {
groups: [
1, 2
],
id: 2,
name: "Test Name2",
_test: null,
_test2: 0.02867696
}
]
Items = Items.map(item => ({
group : item.group,
topicId : item.id,
topicName : item.name,
_test : item._test,
_test2 :item._test2
}))
或者您在数组中有很多字段,而只想更改一个或两个字段,则可以编写如下一般解决方案:
Items = Items.map(item => {
let obj = {};
//Loop trough each fields of item
Object.keys(item).filter(key => {
switch (key) {
//Fields to be changed
case 'id':
obj['topicId'] = item['id']
break;
case 'name':
obj['topicName'] = item['name']
break;
//End
//Rest will be the same
default:
obj[key] = item[key]
}
})
//Return modified obj
return obj;
})
答案 1 :(得分:0)
根据您的问题,您正在尝试修改array
中现有的objects
。下面是伪步骤
map
或任何等效方法遍历数组下面是您的数据的示例代码,在该代码中,我正在将密钥id
修改为_id
var data = [
{
groups: [{}],
id: 1,
name: "Test Name",
_test: null,
_test2: 0.02867696
},
{
groups: [{}],
id: 2,
name: "Test Name2",
_test: null,
_test2: 0.02867696
}
];
var modifiedData = data.map((item) => {
let _item = Object.assign(item, {});
_item['_id'] = item['id'];
delete _item['id'];
return _item;
});
console.log(modifiedData);