dojo 如何使JSON数组唯一[duplicate]

rkttyhzu  于 2022-12-16  发布在  Dojo
关注(0)|答案(5)|浏览(154)

此问题在此处已有答案

10年前关闭了。

可能重复:

Array unique values
Get unique results from JSON array using jQuery
我有一个如下所示的JSON字符串

[
 Object { id="38",product="foo"},
 Object { id="38",product="foo"},
 Object { id="38",product="foo"},
 Object { id="39",product="bar"},
 Object { id="40",product="hello"},
 Object { id="40",product="hello"}

]

此JSON数组中存在重复的值..如何使此JSON数组像这样唯一

[
 Object { id="38",product="foo"},
 Object { id="39",product="bar"},
 Object { id="40",product="hello"}
]

我正在寻找一个使用更少迭代的建议,Jquery $.inArray在这种情况下不起作用。
欢迎使用任何第三方库的建议。

ftf50wuq

ftf50wuq1#

你可以使用下划线的uniq。
在您的例子中,您需要提供一个迭代器来提取'id':

array = _.uniq(array, true /* array already sorted */, function(item) {
  return item.id;
});
n6lpvg4x

n6lpvg4x2#

// Assuming first that you had **_valid json_**
myList= [
    { "id":"38","product":"foo"},
    { "id":"38","product":"foo"},
    { "id":"38","product":"foo"},
    { "id":"39","product":"bar"},
    { "id":"40","product":"hello"},
    { "id":"40","product":"hello"}
];

// What you're essentially attempting to do is turn this **list of objects** into a **dictionary**.
var newDict = {}

for(var i=0; i<myList.length; i++) {
    newDict[myList[i]['id']] = myList[i]['product'];
}

// `newDict` is now:
console.log(newDict);
gstyhher

gstyhher3#

检查以下SO问题中的解决方案:
Get unique results from JSON array using jQuery
你必须遍历你的数组并创建一个包含唯一值的新数组。

guykilcj

guykilcj4#

您可能需要循环删除重复项。如果存储的项按您建议的顺序排列,则只需一次循环即可:

function removeDuplicates(arrayIn) {
    var arrayOut = [];
    for (var a=0; a < arrayIn.length; a++) {
        if (arrayOut[arrayOut.length-1] != arrayIn[a]) {
            arrayOut.push(arrayIn[a]);
        }
    }
    return arrayOut;
}
fd3cxomn

fd3cxomn5#

你可以很容易地自己编写这个代码。从我的头顶上,这个浮现在脑海中。

var filtered = $.map(originalArray, function(item) {
    if (filtered.indexOf(item) <= 0) {
        return item;
    }
});

或者如所建议的,特别是针对手头的情况的更有效的算法:

var helper = {};
var filtered = $.map(originalArray, function(val) {
    var id = val.id;

    if (!filtered[id]) {
        helper[id] = val;
        return val;
    }
});
helper = null;

相关问题