Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从对象数组中删除重复项-下划线_Javascript_Underscore.js - Fatal编程技术网

Javascript 从对象数组中删除重复项-下划线

Javascript 从对象数组中删除重复项-下划线,javascript,underscore.js,Javascript,Underscore.js,正在尝试使uq.uniq()使用以下结构: [ {'x' : 1, 'y': 2}, {'x' : 1, 'y': 2}, {'x' : 2, 'y': 3}, {'x' : 2, 'y': 4}, {'x' : 3, 'y': 4} ] 结果应为: [ {'x' : 1, 'y': 2}, {'x' : 2, 'y': 3}, {'x' : 2, 'y': 4}, {'x' : 3, 'y': 4} ] ie删除重复项

正在尝试使uq.uniq()使用以下结构:

[
    {'x' : 1, 'y': 2},
    {'x' : 1, 'y': 2},
    {'x' : 2, 'y': 3},
    {'x' : 2, 'y': 4},
    {'x' : 3, 'y': 4}
]
结果应为:

[
    {'x' : 1, 'y': 2},
    {'x' : 2, 'y': 3},
    {'x' : 2, 'y': 4},
    {'x' : 3, 'y': 4}
]
ie删除重复项目。我希望避免使用stringify,因为这样我只需要将每个对象解析回一个JSON对象

任何帮助都将不胜感激

编辑:下面是tring Matt的解决方案,我遗漏了一些我认为不起作用的东西。如果我记录a和b的值,我会看到

_.uniq($scope.validNotes, function (a, b) {
    console.log(a, b);
    return a.x === b.x && a.y === b.y;
});


Object {x: 2, y: 3} 0 
Object {x: 1, y: 0} 1 
Object {x: 2, y: 3} 2 
Object {x: 3, y: 2} 3 
Object {x: 4, y: 2} 4
Object {x: 5, y: 1} 5

这显然意味着我将永远找不到任何复制品,因为两个对象不是
=
===
,只是因为它们具有相同的键,您需要使用

注意,您需要返回一个唯一的字符串组合;考虑<代码> {x:11,y:1 } < /> >和<代码> {x:1,y:11 } < /代码>;我的代码将两者解析为
111
,并将它们视为相同的

比如:

_.uniq(myArray, function (item) {
    return 'x:' + item.x + 'y:' + item.y;
});

。。。会更有弹性,但这当然取决于数据的值。

因为两个对象不是
=
==
,仅仅因为它们具有相同的键,您就需要使用

注意,您需要返回一个唯一的字符串组合;考虑<代码> {x:11,y:1 } < /> >和<代码> {x:1,y:11 } < /代码>;我的代码将两者解析为
111
,并将它们视为相同的

比如:

_.uniq(myArray, function (item) {
    return 'x:' + item.x + 'y:' + item.y;
});

。。。会更有弹性,但这当然取决于数据的值。

如果JSON中有抽象数据结构,最好使用stringify将数组元素与字符串进行比较。因为在每个数组元素中都有新对象,所以每个文本对象表示法ie
{}
都会用javascript语言创建新对象,并且它的属性是否相同


但是,如果您有类似x,y的结构,请使用

如果JSON中有抽象数据结构,则最好使用stringify将数组元素与字符串进行比较。因为在每个数组元素中都有新对象,所以每个文本对象表示法ie
{}
都会用javascript语言创建新对象,并且它的属性是否相同


但是,如果你有像x,y这样的结构,请使用

可能重复的可能重复的可能重复的可能重复的可能重复的@Nathan:嗯,对不起。。。套住迭代器的参数。现在试试?太棒了,谢谢。我不确定迭代器是如何工作的,现在有意义了。当我意识到我的数据不正确时,效果就更好了。哈哈,很高兴这有帮助:)。@Nathan:Eugh,对不起。。。套住迭代器的参数。现在试试?太棒了,谢谢。我不确定迭代器是如何工作的,现在有意义了。当我意识到我的数据不正确时,效果会更好。哈哈,很高兴这有帮助:)。