【发布时间】:2019-04-19 07:07:23
【问题描述】:
在我的代码中,我有两个数组,第一个包含多个对象。而第二个是存储序列化的表单数据(映射到 JSON)。所以两个数组都有相同的键。
我想要实现的是根据新数组中对象的值动态更新原始数组中对象的值,通过对象中的ID。
在网上找到了一些示例,但很难让它们起作用。因为它们中的大多数都显示了任一级别的对象,但我正在处理数组中复杂的嵌套对象。
var products = [
{
Id: 1,
Name: 'Product1',
Attributes: {
Storage: 'Normal',
Size: 'Small'
}
},
{
Id: 2,
Name: 'Product2',
Attributes: {
Storage: 'Normal',
Size: 'Small'
}
}
];
var newData = [
{
Id: 2,
Name: 'French Fries'
},
{
Id: 1,
Attributes: {
Size: 'Medium'
}
}
];
预期结果是 products 数组现在使用第二个数组中的值进行了更新。
Output:
[
{
Id: 1,
Name: 'Product1',
Attributes: {
Storage: 'Normal',
Size: 'Medium'
}
},
{
Id: 2,
Name: 'French Fries',
Attributes: {
Storage: 'Normal',
Size: 'Small'
}
}
]
【问题讨论】:
-
为什么第一个对象中的
size没有改变。它应该已更改为medium,因为在newData具有 id1的对象具有大小medium -
@MaheerAli 哦,是的,你是对的。现在更正了。感谢您指出。
-
2只有“Size: Small”而不是“Storage: Normal”的标准是什么?...而1更新其属性。 -
@briosheje 抱歉,这纯粹是错误。
2的输出也应该有"Storage: Normal"。感谢您指出。 -
好的。
Id是唯一的吗?您可以通过该键引用项目以进行查找吗?
标签: javascript jquery arrays json object