問題:數組對象去重
var arr = [{name: ‘a’,id: 1}, {name: ‘a’,id: 2}, {name: ‘b’,id: 3}, {name: ‘c’,id: 4}, {name: ‘c’,id: 6}, {name: ‘b’,id: 6}, {name: ‘d’,id: 7}];
對數組對象name進行去重處理, 結果顯示為:
[{name: ‘a’,id: 1}, {name: ‘b’,id: 3}, {name: ‘c’,id: 4}, {name: ‘d’,id: 7}];
解決方式:
var arr = [{name: 'a',id: 1}, {name: 'a',id: 2}, {name: 'b',id: 3}, {name: 'c',id: 4},{name: 'c',id: 6}, {name: 'b',id: 6}, {name: 'd',id: 7}];
function deWeight() {for (var i = 0; i < arr.length - 1; i++) {for (var j = i + 1; j < arr.length; j++) {if (arr[i].name == arr[j].name) {arr.splice(j, 1);//因為數組長度減小1,所以直接 j++ 會漏掉一個元素,所以要 j--j--;}}}return arr;
}
var newArr = deWeight();
console.log('%c%s', 'color:red;', '方法一:es5,newArr', newArr);