博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CVTE2109春招笔试第一场前端编程题
阅读量:6851 次
发布时间:2019-06-26

本文共 996 字,大约阅读时间需要 3 分钟。

题目大概意思:给定两个维度不确定的数组,求它们之间不重复的数据合集,返回一个新数组

(备:在当时的题目,并没有说明数组中数据的准确类型,本次采用了字符串和数值混合的数据来测试)
如给定:
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]

转载地址:http://izgul.baihongyu.com/

你可能感兴趣的文章
java并发多线程显式锁Condition条件简介分析与监视器 多线程下篇(四)
查看>>
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 8 章 数据类型_8.16. 复合类型
查看>>
sql server 本地复制订阅 实现数据库服务器 读写分离
查看>>
构建HTML5移动应用的十个技巧
查看>>
Redis的服务命令(实现开机自启动)
查看>>
C++语言的单元测试与代码覆盖率
查看>>
spring异常处理
查看>>
设置WPF输入框焦点
查看>>
sigmoid 函数的损失函数与参数更新
查看>>
Python利用sphinx构建个人博客
查看>>
搜狗图像技术团队夺得 MegaFace 人脸识别赛道第一
查看>>
专为 Python 初学者准备的 IDE 你用过吗?
查看>>
这 10 个 MySQL 经典错误,遇到过才是老司机!
查看>>
Spark Streaming连接Kafka入门教程
查看>>
ios学习系列四之控制器相关知识
查看>>
阿里「Java架构师」 所需要的知识 、评级P6!
查看>>
【总结——HTTP协议】
查看>>
使用WireMock 伪造 Rest 服务
查看>>
c/c++内存机制(一)(原)
查看>>
MKVToolNix v33.0.0 发布,MKV 视频编辑工具软件
查看>>