我试图根据以下JSON的id删除重复条目,但似乎无法正确解析json,我的JSON数组如下所示:
[ '{"entries":[{"name":"sample","id":"8d"},{"name":"sample","id":"57"},{"name":"sample","id":"acc"}]}\n',
'{"entries":[{"name":"sample","id":"8d"},{"name":"sample","id":"50"},{"name":"sample","id":"ac"}]}\n',
'{"entries":[{"name":"sample","id":"8d"},{"name":"sample","id":"50"},{"name":"sample","id":"ac"}]}\n',
'{"entries":[{"name":"sample","id":"8d"},{"name":"sample","id":"50"}]}\n',
]输出应该是
{"entries":[{"name":"sample","id":"8d"},{"name":"sample","id":"57"},{"name":"sample","id":"acc"}]}我的守则如下:
removeDups: async function(listent){
for (i = 0; i < listent.length; i++){
console.log(listent.length)
for (j = 0; j < listent.length; j++){
console.log(listent[j])
}
var standardsList = this.arrUnique(listent);
console.log("standard", standardsList)
}
},
arrUnique: function (arr) {
var cleaned = [];
arr.forEach(function(itm) {
var unique = true;
cleaned.forEach(function(itm2) {
if (_.isEqual(itm, itm2)) unique = false;
});
if (unique) cleaned.push(itm);
});
return cleaned;
}发布于 2018-10-13 04:13:29
希望这对你有用:https://jsfiddle.net/c0pkw5ju/
核心职能是:
var val = array.reduce(function (acc, val) {
return acc.concat(val.entries)
}, [])
console.log(_.unique(val, function (v) {
return v.id
}))基本上,您需要将您的\n分离的JSON响应转换为JS对象,该对象可以按指示使用。如果这不起作用的话请告诉我。
输出:
[
{
"name": "sample",
"id": "8d"
},
{
"name": "sample",
"id": "57"
},
{
"name": "sample",
"id": "acc"
},
{
"name": "sample",
"id": "50"
},
{
"name": "sample",
"id": "ac"
}
]最新情况:假设答复如下:
var response = ['{"entries":[{"name":"sample","id":"8d"},{"name":"sample","id":"57"},{"name":"sample","id":"acc"}]}\n',
'{"entries":[{"name":"sample","id":"8d"},{"name":"sample","id":"50"},{"name":"sample","id":"ac"}]}\n',
'{"entries":[{"name":"sample","id":"8d"},{"name":"sample","id":"50"},{"name":"sample","id":"ac"}]}\n',
'{"entries":[{"name":"sample","id":"8d"},{"name":"sample","id":"50"}]}\n',
]如果您处理了如下所示的响应:
var array = response.map(function(val) {
return JSON.parse(val.trim())
})那么核心功能就会起作用。
发布于 2018-10-13 07:02:47
运行代码片段,您将看到与您在问题中提到的完全相同的输出。我希望这对你(和其他人)有帮助。:)
const data = ['{"entries":[{"name":"sample","id":"8d"},{"name":"sample","id":"57"},{"name":"sample","id":"acc"}]}\n',
'{"entries":[{"name":"sample","id":"8d"},{"name":"sample","id":"50"},{"name":"sample","id":"ac"}]}\n',
'{"entries":[{"name":"sample","id":"8d"},{"name":"sample","id":"50"},{"name":"sample","id":"ac"}]}\n',
'{"entries":[{"name":"sample","id":"8d"},{"name":"sample","id":"50"}]}\n',
];
// Let us first format it correctly
const formatted = data.map(x => {
return JSON.parse(x.trim())
});
// Let's loop over our newly created array and push unique values into a new one
let uniqueNames = [];
let uniqueObj = [];
for(let i = 0; i < formatted.length; i++){
if(uniqueNames.indexOf(data[i]._id) === -1){
uniqueObj.push(data[i])
uniqueNames.push(data[i]._id);
}
}
// Let's take that one step further and display it exactly as you wanted it to be :)
const iterator = uniqueObj.values();
for (const value of iterator) {
console.log(value);
}
https://stackoverflow.com/questions/52788667
复制相似问题