可能重复:
阵列唯一值
从获得使用jQuery JSON阵列的独特成果
有一个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 array..how我可以让这个JSON数组唯一这样
[
Object { id="38",product="foo"},
Object { id="39",product="bar"},
Object { id="40",product="hello"}
]
.IM寻找使用较少的迭代建议, Jquery $.inArray
没有在这种情况下工作。
建议使用任何第三方库的欢迎。
检查以下问题SO解决方案:
从获得使用jQuery JSON阵列的独特成果
你必须通过你的阵列中迭代并创建一个包含唯一值的新数组。
您可以使用下划线的uniq的 。
在你的情况,你需要提供一个迭代提取“ID”:
array = _.uniq(array, true /* array already sorted */, function(item) {
return item.id;
});
你可能会通过删除重复项必须循环。 如果存储的项目都是为了你建议,这是一个循环的一个简单的问题:
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;
}
您可以轻松地编写这个自己。 从我的头顶这个浮现在脑海。
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;