检查对象数组中的重复条目并创建一个新条目

Checking for duplicate entries in array of objects and creating a new one

我正在尝试通过创建一个新数组来合并对象数组中的重复条目。

我不知道如何在不循环遍历新数组的情况下检查是否重复,这在尝试推送内容时让我感到困惑,因为它每次都在外循环中执行。

我应该如何正确执行此操作?

var arr=[0];
for (var k in data) {
    var name = data[k].name;
    var item = data[k];
    //check if already in array
    for (var l in arr){
        if (arr[l].name == name){
            arr[l].value = arr[l.value] + ';;' + item.value;
        } else {
            arr.push(item);
        }
    }
}

Lodash

var arr = _.uniqBy(data, 'name');

不太确定我是否正确回答了你的问题,但你可以使用 .indexOf() 来解决这个问题。 indexOf returns 元素在数组中的位置,如果不存在则为 -1:http://www.w3schools.com/jsref/jsref_indexof_array.asp

var oldArr = [1,2,2,2,3,4,5];
var newArr = [];

for (var i = 0; i < oldArr.length; i++) {
    if (newArr.indexOf(oldArr[i]) == -1) {
        newArr.push(oldArr[i]);
    }
}

console.log(newArr);