Open yygmind opened 6 years ago
let arr = [[0, 1], [2, 3], [4, [5, 6, 7, 8]]] var newArr = function (arr) { return arr.reduce((pre, cur) => pre.concat(Array.isArray(cur) ? newArr(cur) : cur), []) } 与下面这个有什么区别, 返回时多写了一堆大括号, 为什么运行结果完全不一致: let arr = [[0, 1], [2, 3], [4, [5, 6, 7, 8]]] var newArr = function (arr) { return arr.reduce((pre, cur) => { pre.concat(Array.isArray(cur) ? newArr(cur) : cur) }, []) }
@ycwsurmount 未return 无大括号 代表 return 省略写法
数组去重或者判断有没有重复元素用new Set()就ok了.
数组方法概述
1、不改变原数组,返回新数组
concat()
连接两个或多个数组,两边的原始数组都不会变化,返回被连接数组的一个副本。
join()
把数组中所有元素放入一个字符串中,返回字符串。
slice()
从开始到结束(不包括结束)选择数组的一部分浅拷贝到一个新数组。
map()
创建一个新数组并返回,其中新数组的每个元素由调用原始数组中的每一个元素执行提供的函数得来,原始数组不会改变。
every()
对数组中的每个元素都执行一次指定的回调函数,直到回调函数返回
false
,此时every()
返回false
并不再继续执行。如果回调函数对每个元素都返回true
,那么every()
将返回true
。some()
对数组中的每个元素都执行一次指定的回调函数,直到回调函数返回
true
,此时some()
返回true
并不再继续执行。如果回调函数对每个元素都返回false
,那么some()
将返回false
。filter()
创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
2、改变原数组
forEach()
针对每一个元素执行提供的函数。会修改原来的数组,不会返回执行结果,返回
undefined
。pop()
删除数组最后一个元素,返回被删除的元素。如果数组为空,则不改变数组,返回
undefined
。push()
向数组末尾添加一个或多个元素,返回改变后数组的长度。
reverse()
颠倒数组中元素的位置,返回该数组的引用。
shift()
从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
unshift()
将一个或多个元素添加到数组的开头,并返回新数组的长度。
sort()
对数组的元素进行排序,并返回数组。排序不一定是稳定的。默认排序顺序是根据字符串Unicode码点。
splice()
向数组中添加/删除项目,然后返回被删除项目的新数组。
遍历方法
获取属性名:
for..in
和object.keys()
的区别for..in
语句:遍历对象的可枚举属性名列表,包括[[Prototype]]原型链。propertyIsEnumerable(..)
:只检查属性名是否在对象中并且enumerable:true
。Object.keys(..)
:只查找属性名是否在对象中,返回一个数组,包含所有可枚举属性名。Object.getOwnPropertyNames(..)
:只查找属性名是否在对象中,返回一个数组,包含所有属性名,无论是否可枚举。获取属性值:
for..of
和object.values()
for..of
语句:遍历可迭代对象的可枚举属性的值列表,包括[[Prototype]]原型链。object.values()
:返回一个给定对象自身的所有可枚举属性的值的数组,不包括原型链ES6语法之Map键值对转化数组
new Map创建一个map
两个升序数组合并成一个升序数组
数组去重
多维数组降维
两个数组的交集 II
给定两个数组,写一个方法来计算它们的交集。
例如:
给定 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].
注意:
跟进:
解法:
从排序数组中删除重复项
只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素
参考资料:https://blog.csdn.net/qq_35546040/article/details/80284079
两数之和
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:
解法:
旋转数组
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
示例 1:
示例 2:
说明:
解法:
加一
给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
示例 2:
解法:
存在重复
给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。
示例 1:
示例 2:
示例 3:
解法 :
移动零
给定一个数组
nums
,编写一个函数将所有0
移动到数组的末尾,同时保持非零元素的相对顺序。示例:
说明:
解法1:
解法2:
交流
欢迎加我微信进一步交流或者找我内推,前行的路上,共勉!