如何使 JSON 数组唯一
How to make a JSON array unique
可能的重复项:
数组唯一值
使用 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 数组中有重复值。我怎样才能像这样使这个 JSON 数组独一无二
[
Object { id="38",product="foo"},
Object { id="39",product="bar"},
Object { id="40",product="hello"}
]
.我正在寻找一个使用较少迭代的建议, 在这种情况下,Jquery $.inArray
不起作用。
欢迎建议使用任何第三方库。
您可以使用下划线的 uniq。
在您的情况下,您需要提供一个迭代器来提取"id":
array = _.uniq(array, true /* array already sorted */, function(item) {
return item.id;
});
// 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);
检查以下 SO 问题中的解决方案:
使用 jQuery 从 JSON 数组获取唯一结果
您必须遍历数组并创建一个包含唯一值的新数组。
您可能必须循环删除重复项。如果存储的项目如您所建议的那样有序,则只需执行一个简单的循环:
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;
相关文章:
- 如何从数组中查找唯一对象
- JavaScript:从对象数组中获取唯一值及其计数
- 创建具有2个唯一数字的Javascript数组
- javascript和具有唯一密钥的es6过滤器数组
- 根据对多个数组唯一的元素创建一个新数组
- 将数组中的重复项转换为唯一项,而不删除Javascript中的任何项
- 映射对象数组,并且仅采用唯一
- Ember JS如何获取具有唯一属性值的数组
- 如何使 JSON 数组唯一
- Javascript:编写一个函数,接收一个数组,然后返回一个只有唯一数字的数组,只删除数组
- 从数组列表中返回唯一的数组
- 推送时请确保数组中的值是唯一的
- 对具有唯一值的对象键的数组进行排序
- 基于两个属性从 javascript 中的对象数组中获取唯一数组
- Javascript:如何将对象数组转换为具有排序唯一数组的对象
- 合并并返回唯一数组问题
- 日期的唯一数组
- Javascript唯一数组项
- 以最有效的方法查找唯一数组
- 在Javascript中迭代地声明唯一数组