【发布时间】:2018-11-09 05:22:53
【问题描述】:
我试图从这个 json 中删除重复的条目,但它只返回一个我不明白我哪里出错的对象。
代码如下。
// exemplary array of objects (id 'NewLive' occurs twice)
var arr = [
{"jobcodeid":{"S":"Etc_new"}},
{"jobcodeid":{"S":"NewLive"}},
{"jobcodeid":{"S":"NewLiveVid"}},
{"jobcodeid":{"S":"New_Live"}},
{"jobcodeid":{"S":"New_Live_Vid"}},
{"jobcodeid":{"S":"Newest"}},
{"jobcodeid":{"S":"NewestLive"}},
{"jobcodeid":{"S":"NewestLiveVid"}},
{"jobcodeid":{"S":"Very_New_Vid"}},
{"jobcodeid":{"S":"Etc_new"}},
{"jobcodeid":{"S":"NewLive"}},
{"jobcodeid":{"S":"NewLiveVid"}},
{"jobcodeid":{"S":"New_Live"}},
{"jobcodeid":{"S":"New_Live_Vid"}},
{"jobcodeid":{"S":"Newest"}},
{"jobcodeid":{"S":"NewestLive"}},
{"jobcodeid":{"S":"NewestLiveVid"}},
{"jobcodeid":{"S":"Very_New_Vid"}}
],
obj = {}, new_arr = [];
// in the end the last unique object will be considered
arr.forEach(function(v){
obj[v['id']] = v;
console.log(JSON.stringify(new_arr));
});
new_arr = Object.keys(obj).map(function(id) { return obj[id]; });
console.log(JSON.stringify(new_arr));
我也附上了codepen。
【问题讨论】:
-
您是否只是想返回没有重复的相同对象?
-
@Jacques 是的,我是
-
obj[v['id']] = v;应该是obj[v['jobcodeid']] = v;。由于没有id,因此所有对象都未定义,因此您基本上是用下一个替换所有值。因此你只得到 1 -
for (const job of arr) { if (!obj[job.jobcodeid.S]) { obj[job.jobcodeid.S] = true; new_arr.push(job); } }
标签: javascript arrays node.js json