检查对象数组中的重复条目并创建一个新条目
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);
我正在尝试通过创建一个新数组来合并对象数组中的重复条目。
我不知道如何在不循环遍历新数组的情况下检查是否重复,这在尝试推送内容时让我感到困惑,因为它每次都在外循环中执行。
我应该如何正确执行此操作?
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);