CVTE2109春招笔试第一场前端编程题

发布时间:2019-08-09 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了CVTE2109春招笔试第一场前端编程题脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

题目大概意思:给定两个维度不确定的数组,求它们之间不重复的数据合集,返回一个新数组
(备:在当时的题目,并没有说明数组中数据的准确类型,本次采用了字符串和数值混合的数据来测试)
如给定:
arr1 = [11, 25, 44, [52, 44, 23], '52']
arr2 = [16, 25, 17, [11, 25, [23, 18]]]
返回:[52, "52", 16, 17, 18]

本次需要考虑的问题:
1、数组降维
因为数组的维度是不确定的,我们需要做的是把两个数组都转换成一维数组。
在ES6中,提供了这么一个方法

Array.PRototyPE.flat()

在数组的层次不确定时,可以使用InfinITy关键字作为参数,即:

Array.prototype.flat(Infinity)

2、使用对象来判断数据出现的次数
本次需要的数据是:两个数组合并后只出现一次的数据,这里我想到的是采用对象的键值对方法,但是由于普通对象的键是字符串类型,对于数组中同时出现字符串和数值类型则无法判断,所以我采用Map集合来存储数据,Map集合是ES6提供的一个完整的hash结构,键可以是任意类型

代码如下:

function fn(arr1, arr2){
    let map = new Map();
    let res = [];
    let arr = arr1.flat(Infinity).concat(arr2.flat(Infinity));
    arr.foreach(ele => {
        map.has(ele) ? map.set(ele, false) : map.set(ele, true)
    });
    for(let [key, val] of map.entries()){
        if(val){
            res.push(key);
        }
    }
    return res;
}

测试代码:

let arr1 = [11, 25, 44, [52, 44, 23], '52'];
let arr2 = [16, 25, 17, [11, 25, [23, 18]]];
console.LOG(fn(arr1, arr2));

结果:

[52, "52", 16, 17, 18]

脚本宝典总结

以上是脚本宝典为你收集整理的CVTE2109春招笔试第一场前端编程题全部内容,希望文章能够帮你解决CVTE2109春招笔试第一场前端编程题所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。