首页 > 其他 > 详细

刷面经笔记2019.02.14

时间:2019-02-14 18:55:54      阅读:130      评论:0      收藏:0      [点我收藏+]

1.数组方法

1)join()把数组上午所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

该方法只接收一个参数,用作分隔符的字符串,然后返回包含所有数组项的字符串,如果不给join()方法传入任何值,则使用逗号作为分隔符。

var a = [1,2,3];
console.log(a.join());//‘1,2,3‘
console.log(a.join(‘ ‘));//‘1 2 3‘
console.log(a.join(‘‘));//‘123‘
var b = new Array(10);
b.join(‘-‘);//‘---------‘,9个连字符组成的字符串

注意:如果join()方法的参数是undefined,标准浏览器以逗号为分隔符返回字符串,而IE7-浏览器以"undefined"为分隔符返回字符串;

如果数组中某一项的值是null或者undefined,则该值在join()方法返回的结果中以空字符串表示。

2)push()方法可以接收任意数量的参数,把它们逐个添加到数组末尾,并且返回修改后数组的长度。

var a = [];
console.log(a,a.push(1));//[1] 1
console.log(a,a.push(‘a‘));//[1,‘a‘] 2
console.log(a,a.push(true, {}));//[1,‘a‘,true,{}] 4
console.log(a,a.push([5,6]));//[1,‘a‘,true,{},[5,6]] 5

3)pop()方法从数组末尾移除最后一项,减少数组的length,然后返回移除的项。

var a = [‘a‘, ‘b‘, ‘c‘];
console.log(a,a.pop()); // [‘a‘, ‘b‘] ‘c‘

注意:给pop参数传其他数字不起作用,也不报错。还是只删除最后一项;

对空数组使用pop()方法,不会报错,而是返回undefined

4)shift()方法移除数组中的第一个项并返回该项,同时数组的长度减1

var a = [‘a‘, ‘b‘, ‘c‘];
console.log(a,a.shift());//[‘b‘, ‘c‘] ‘a‘
var arr6 = [1];
console.log(arr6,arr6.shift()); //[] 1

注意:对空数组使用shift()方法,不会报错,而是返回undefined

5)unshift()方法在数组前面添加任意个项并返回新数组长度。

var a = [‘a‘, ‘b‘, ‘c‘];
console.log(a,a.unshift(‘x‘)); //[‘x‘, ‘a‘, ‘b‘, ‘c‘] 4

注意:当传入多个参数时,是一次性插入。最终的数组中插入的元素的顺序和它们在参数列表中的 顺序一致;

在IE-7浏览器中,unshift()方法的返回值总是undefined

6)reserve()方法用于反转数组的顺序,返回经过排序之后的数组;而原来数组的顺序也发生改变。

var array = [1,2,4,3,5];
console.log(array,array.reverse());//[5,3,4,2,1] [5,3,4,2,1]
var array = [‘str‘,true,3];
console.log(array,array.reverse());//[3,true,‘str‘] [3,true,‘str‘]

7)sort()按照字符编码的顺序进行排序。sort()方法会调用每个数组项的toString()方法,然后比较得到的字符串排序,返回经过排序之后的数组,而原数组顺序也发生改变。

var array = [2,1,4,3,5];
console.log(array,array.sort());//[1,2,3,4,5] [1,2,3,4,5]
var array = [‘3str‘,3,2,‘2‘];
console.log(array,array.sort());//[2, "2", 3, "3str"] [2, "2", 3, "3str"]

注意:如果数组包含undefined元素,它们会被排到数组的尾部;

arrayObject.sort(sortby) 参数可选。规定排序顺序。必须是函数。比较函数接收两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等则返回 0,如果第一个参数应该位于第二个之后则返回一个正数。

 

2.数组降维

方法一:

function flattenDeep(arr) {
        arr = "" + arr;  // 或者arr = arr.toString();

        arr = arr.split(",");
        arr = arr.map(Number)
        return arr;
    }
flattenDeep([1, [[2],[3, [4]], 5]]);

方法二:

function flattenDeep(arr) {
    if(!Array.isArray(arr))
        return [arr];
    return arr.reduce((prev,cur) => {        
        return [...prev, ...flattenDeep(cur)];
    },[]);
}

flattenDeep([1, [[2], [3, [4]], 5]]);

方法三:

function flattenDeep(arr){
    while(arr.some(item=>Array.isArray(item)){
        arr = [].concat(...arr);
    }
    return arr;
}

 https://blog.csdn.net/qq_35652217/article/details/78470118

https://blog.csdn.net/carpenterworm1874/article/details/79342037

刷面经笔记2019.02.14

原文:https://www.cnblogs.com/lhh520/p/10373802.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!