js数组 面试题

ES6 去重

Array.from(new Set([1,2,3,4,5,4,3,2]))

[...new Set([1,2,3,4,5,4,3,2])]

//[1, 2, 3, 4, 5]

 

排序

[1,2,2,3,4,3,5,1].sort()

//[1, 1, 2, 2, 3, 3, 4, 5]


[1,2,2,3,4,3,5,1].sort((a,b)=>b-a)

//[5, 4, 3, 3, 2, 2, 1, 1]

最大值

1.

Math.max(...[1,2,3,4,5,1,6,6,3])
//6

Math.max()是Math对象内置方法,参数是字符串。

2.

Math.max.apply(this,[1,2,3,4,5,1,6,6,3])
//6

3.

[1,2,3,4,5,1,6,6,3].reduce((prev,cur,curIndex,arr)=>{
     return Math.max(prev,cur);
},0)

//6

reduce是ES5的数组api,参数有函数和默认初始值

函数有四个参数:prev上一次的返回值,cur当前值,curIndex当前值索引,arr当前数组

求和

[1,2,3,1,3].reduce((prev,cur)=>{
     return prev+cur;
},0)

//10

合并

1.

[1,2,3,4].concat([1,2,3]);

//[1, 2, 3, 4, 1, 2, 3]

2.

[...[1,2,3,4],...[4,5,6]];

[1, 2, 3, 4, 4, 5, 6]

判断两个数组哪个更大,然后使用大数组合并小数组,这样就减少了数组元素操作的次数!

每一项设置值

1.

[1,2,3].fill(false);

//[false, false, false]

  fill是ES6的方法

2.

[1,2,3].map(()=>0);

//[0, 0, 0]

每一项是否满足

[1,2,3].every(item=>{return item>2})

//false

every是ES5的api,,每一项满足返回 true

有一项满足

[1,2,3].some(item=>{return item>2});

//true

some是ES5的api,有一项满足返回 true

过滤数组

[1,2,3].filter(item=>{return item>2})

//[3]

filter是ES5的api,返回满足添加的项的数组

对象和数组转化

Object.keys({name:'张三',age:14})

 ["name", "age"]
Object.values({name:'张三',age:14});

 ["张三", 14]
Object.entries({name:'张三',age:14});

//[["name", "张三"],["age", 14]]

源自:https://segmentfault.com/a/1190000018549643

猜你喜欢

转载自blog.csdn.net/weixin_40802058/article/details/88689807