前端问的两道笔试题:

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)

你可能感兴趣的:(前端问的两道笔试题:)