拼多多
合并两个对象
concat、for 循环、扩展运算法、push.apply 这些方法都可以
1、concat
concat() 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
var a = [1,2,3];
console.log(a.concat(4,5)); // [1, 2, 3, 4, 5]2、for 循环 -- for 循环push到一个数组
3、扩展运算法
var a = [1,2,3];
var b = [4,5,6];
console.log([...a, ...b]); // [1, 2, 3, 1, 2, 3]4、push.apply
合并数组是把后一个数组的值依次push进前一个数组,使前一个数组发生改变,并且只能两个数组之间发生合并。
var arr1 = [1,2,3,4];
var arr2 = [4,5,6,7,8];
arr1.push.apply(arr1,arr2)
console.log(arr1) //[1, 2, 3, 4, 4, 5, 6, 7, 8]
合并两个对象
Object.assign、扩展运算法、手写深浅拷贝 都可以
interface 和 type 的区别
在ts中,定义类型由两种方式:接口(interface)和类型别名(type alias)
interface只能定义对象类型,type声明的方式可以定义组合类型,交叉类型和原始类型
如果用type alias 声明的方式,会导致一些功能的缺失
- interface方式可以实现接口的extends/implements,而type 不行
- interface可以实现接口的merge,但是type不行
最后附赠一道前端面试题(腾讯):数组扁平化、去重、排序
关于 Array 的属性、方法这里不再做介绍,详看 MDN Array 。
面试题:
已知如下数组:var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组
答案:
var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10]
// 扁平化
let flatArr = arr.flat(4)
// 去重
let disArr = Array.from(new Set(flatArr))
// 排序
let result = disArr.sort(function(a, b) {
return a-b
})
console.log(result)
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]