某公司前端笔试题(12.30)

1、对象数组去重:

数组去重:

    const a=[{a:1,b:2},{a:2},{a:2},{a:1,c:3},{b:2,a:1}]

结果:[{a:1,b:2},{a:2},{a:1,c:3}]

// 判断两个对象的属性值是否一致
const a = [{ a: 1, b: 2 }, { a: 2 }, { a: 2 }, { a: 1, c: 3 }, { b: 2, a: 1 }]
const isSameObject = (a, b) => {
    if (Object.keys(a).length !== Object.keys(b).length) return false;
    for (const key in a) {
        if (Object.hasOwnProperty.call(a, key)) {
            if (a[key] !== b[key]) return false
        }
    }
    return true;
}
const uniqueFn = (tempArr) => {
    const res = tempArr.slice(0)
    for (let i = 0; i < tempArr.length; i++) {
        for (let j = i + 1; j < tempArr.length; j++) {
            if (isSameObject(tempArr[i], tempArr[j])) {
                console.log(i, j);
                res.splice(i, 1)
            };
        };
    };
    return res;
}
console.log(uniqueFn(a));

2、事件循环相关 

setTimeout(function() {
    console.log('setTimeout1');    // 8  setTimeout1
    new Promise(function(resolve) {
        console.log('promise0');  // 9  promise0
        resolve()
    }).then(function() {
        console.log('settimeout promise resolveed');   // 10  settimeout promise resolveed
    })
});

setTimeout(function() {
    console.log('setTimeout2');  // 11  setTimeout2
});

const P = new Promise(function(resolve) {
    console.log('promise');    // 1  promise
    for (var i = 0; i < 10000; i++) {
        if(i === 10) {
            console.log('for'); // 2  for
        }
        if (i === 9999) {
            resolve('resolve'); 
        }
    }
}).then(function(val) {
    console.log('resolve1');    // 5  resolve1
}).then(function(val) {
    console.log('resolve2');     // 6  resolve2
});

new Promise(function(resolve) {
    console.log('promise2');     // 3  promise2
    resolve('resolve');
}).then(function(val) {
    console.log('resolve3');   //  7  resolve3
})
console.log('console');       // 4  console

3、扁平化数组

实现一个flat函数,把嵌套的数组打平,flat([[1,2,[3,[4,[5]]]]]),返回[1,2,3,4,5]

const flat = (nums) => {
    const res = nums.reduce((pre, cur) => {
        if (Array.isArray(cur)) {
            return [...pre, ...flat(cur)]
        } else {
            pre.push(cur)
        }
        return pre
    }, [])
    return res;
}
console.log(flat([[1, 2, [3, [4, [5]]]]])); // [ 1, 2, 3, 4, 5 ]

相关推荐

  1. 成都公司试题sql

    2023-12-07 23:28:04       19 阅读
  2. 互联网公司c++试题1

    2023-12-07 23:28:04       13 阅读
  3. 试题记录

    2023-12-07 23:28:04       19 阅读
  4. 前端试题(一)

    2023-12-07 23:28:04       33 阅读
  5. 前端试题(二)

    2023-12-07 23:28:04       37 阅读
  6. 前端试题(一)

    2023-12-07 23:28:04       34 阅读
  7. 前端试题(七)

    2023-12-07 23:28:04       33 阅读
  8. 前端试题(十)

    2023-12-07 23:28:04       40 阅读
  9. 青葡萄科技前端开发试题

    2023-12-07 23:28:04       21 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-07 23:28:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-07 23:28:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-07 23:28:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-07 23:28:04       20 阅读

热门阅读

  1. 【bug排查解决】现象级延迟8-10s

    2023-12-07 23:28:04       44 阅读
  2. 如何诊断处理生产环境服务器变慢

    2023-12-07 23:28:04       39 阅读
  3. pcl-2 pcl结合opencv做svm分类(高程数据)

    2023-12-07 23:28:04       32 阅读
  4. jdbc4.MySQLSyntaxErrorException: Query was empty

    2023-12-07 23:28:04       34 阅读
  5. TCP通讯

    TCP通讯

    2023-12-07 23:28:04      35 阅读