Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从对象数组高效地更新javascrips中的字典_Javascript_Angular - Fatal编程技术网

Javascript 从对象数组高效地更新javascrips中的字典

Javascript 从对象数组高效地更新javascrips中的字典,javascript,angular,Javascript,Angular,我收到API的以下回复: 我需要更新字典,而不必在整个数组中运行 这是一种有效的方法吗 在进行此响应之前,我得到了一个“getall”数组,并将该数组转换为dictionary,以便更容易更新列表 [ {id:2, name:"rrr"}, {id:3 , name:"test"} ] 我有以下字典: 0: {id:0, name:"aaa"}, 1: {id:1, name:"bbb"}, 2: {id:2, name:"rrr"}, 3: {id:3, name:"zzz"},

我收到API的以下回复:

我需要更新字典,而不必在整个数组中运行 这是一种有效的方法吗

在进行此响应之前,我得到了一个“getall”数组,并将该数组转换为dictionary,以便更容易更新列表

[
  {id:2, name:"rrr"},
  {id:3 , name:"test"}
]
我有以下字典:

0: {id:0, name:"aaa"},
1: {id:1, name:"bbb"},
2: {id:2, name:"rrr"},
3: {id:3, name:"zzz"},
mergind结果使用新对象更新字典中的数据(替换对象) 字典的键与“id”参数相同

所以结果会是,

0: {id:0, name:"aaa"},
1: {id:1, name:"bbb"},
2: {id:2, name:"rrr"},
3: {id:3, name:"test"},

我想你要找的是这样的东西

使用array.prototype.map函数循环整个响应数组,并将其映射到所需格式的自定义对象

let dictionary = {};
    array.map(function(item) {
        dictionary[item.id] = item
    })

对于lodash,我会使用这样的东西

const dict={
0:{id:0,名称:“aaa”},
1:{id:1,名称:“bbb”},
2:{id:2,名称:“rrr”},
3:{id:3,名称:“zzz”}
};
预期常数={
0:{id:0,名称:“aaa”},
1:{id:1,名称:“bbb”},
2:{id:2,名称:“rrr”},
3:{id:3,名称:“test”}
}
//来自xhr响应的数据
常数xhrResponse=[
{id:2,名称:“rrr”},
{id:3,名称:“test”}
];
// 
_.合并(
dict,//合并到dict中
_.keyBy(xhrResponse,'id')//keyBy函数的结果
);
log(`Actua${uu.isEqual(预期,dict)'''NOT'}等于预期')
控制台日志(dict)

什么是预期的输出和更新的api响应所基于的条件能否简单说明需要处理的数据和需要的结果数据?Hi@chaitanya i添加了一个示例,我只需要将数组合并到字典中,并替换为IDAPI。您的API响应将包含其他字典中的所有对象,还是仅包含其中的一部分?