1,下面输出结果是什么?
var result = [];
var a = 3;
var total = 0;
function foo(a) {
var i = 0;
for(; i < 3; i++) {
result[i] = function() {
console.log(total);
total += i * a;
console.log(i, a, total);
}
}
}
foo(1);
result[0](); // 3
result[1](); // 6
result[2](); // 9
---
2,
a=[{id:2, name: 'p'}, {id: 4}, {id:2}, { id: 55}]
对象数组去重,生成一个新数组,数组里面每个元素的id属性值都不重复
---
解:
第一题:0
3 1 3
3
3 1 6
6
3 1 9 主要考察闭包与for循环后i的值已经固定是3
第二:
function isExist(arr,value, key) {
for (let i = 0, len = arr.length; i < len; i++) {
if (arr[i][key] === value) {
return i;
}
}
return -1;
}
function arrMerge(array) {
let newArr = [];
array.forEach(item => {
let res = isExist(newArr,item.id, "id");
if (res == -1) {
newArr.push(item);
}
});
return newArr;
};
arrMerge(arr)