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)