一,数组去重
- 方式一(使用两个for循环和if语句)执行效率相对低;
var arr = [2,4,1,2,2,2,2,4,6,5,9,4,4,5,2];
for(i=0;i
- 方式二(使用一个for循环和空数组、空对象、及if判断语句)执行效率相对方式一高点
var arr = [2,4,1,2,2,2,2,4,6,5,9,4,4,5,2];
var newArr = [];
var o = {}; // { 1:true, 2:true}
for (let i = 0; i < arr.length; i++) {
var t = arr[i];
if(o[t]){ // 标记是否处理过
}else{
newArr.push(arr[i]);
o[t] = true;
}
}
console.log(newArr)
二,统计数组中各元素的个数
- 方式一(使用两个for循环和if判断语句,一个空对象)效率相对低
var arr = [2,4,1,2,2,2,2,4,6,5,9,4,4,5,2];
var obj = {}
for(i=0;i
- 方式二(使用一个for循环和if判断语句)效率相对方式一高点
var a = [2,4,1,2,2,2,2,4,6,5,9,4,4,5,2];
function f(a) {
var obj = {};
for (let i = 0; i < a.length; i++) {
var t = a[i];
if (obj.hasOwnProperty(t)){ //判断t属性是否为对象obj中的属性;
obj[t] = obj[t]+1;
}else{
obj[t] = 1;
}
}
return obj;
}
console.log(f(a));
var arr = [2,4,1,2,2,2,2,4,6,5,9,4,4,5,2];
var objGroup = arr.reduce(function (obj, name) {
obj[name] = obj[name] ? ++obj[name] : 1;
return obj;
}, {});
console.log(objGroup);