对象,数组常用API

128 阅读2分钟

对象

Object.assign() 将多个对象混合起来

var obj1 = {
    a: 1,
    b: 2
}
var obj2 = {
    b: 3,
    c: 4
}
var obj3 = {
    d: 5,
    e: 6
}
Object.assign(obj1, obj2, obj3)
console.log(obj1)

打印结果为 { a: 1, b: 3, c: 4, d: 5, e: 6 }
只改变obj1 不改变其他数组
下面的方法可以返回新的数组
var obj4 = Object.assign({}, obj1, obj2, obj3)

console.log(Object.getPrototypeOf(obj4));
获取一个对象的隐式原型
console.log(Object.setPrototypeOf(obj4,prototype));
设置一个对象的隐式原型

Object.create()创建空原型的对象

Object.create(target)返回一个对象,已target做为隐式原型

数组

Array.prototype.concat() 将多个数组拼接成一个

var nums1 = [1, 2, 3];
var nums2 = [4, 5, 6];
var nums3 = [7, 8, 9];
console.log(nums1.concat(nums2, nums3));

打印结果为[1,2,3,4,5,6,7,8,9]

Array.prototype.includes() 判断数组中是否包含某个值

var arr = [123, 456, 789]
console.log(arr.includes(123));

打印结果为true

Array.prototype.indexOf() 某个值在数组中第一次出现的下标

console.log(arr.indexOf(123));

打印结果为0

Array.prototype.lastIndexOf() 某个值在数组中最后一次出现的下标

var arr = [123, 456, 789 ,123]
console.log(arr.lastIndexOf(123));

打印结果为3

Array.prototype.join() 把数组的每一项用指定字符串链接起来,返回一个新的字符串

var arr = [123, 456, 789, 123]
console.log(arr.join(","));

打印结果为"123,456,789,123"

Array.prototype.push() 向数组最后添加一项

var arr = [123, 456, 789]
arr.push(999)
console.log(arr);

打印结果为[ 123, 456, 789, 999 ]

Array.prototype.shift() 向数组开头添加一项
Array.prototype.ppo() 删除数组最后一项
Array.prototype.shift() 删除数组第一项
代码道理同上

Array.prototype.splice()删除,修改,插入任何位置的值

Array.prototype.reverse()将数组颠倒

Array.prototype.sort() 数组排序,传值为函数

var arr = [1, 11, 7, 20]
arr.sort(function (a, b) {
    return a - b
})
console.log(arr);

打印结果为[ 1, 7, 11, 20 ]

arr.sort(function () {
    return Math.random() - 0.5
})

这种方法可以对数组进行随机排序

Array.prototype.slice() 对数组进行切割
返回一个新数组 两个参数起始下标和结束下标,如果不传第二个参数会切割到结尾, 如果不传值,或者值为0,复制出一个地址不用的新数组

var arr = [1, 11, 7, 20]
var arr1 = arr.slice(0, 2)

打印结果为[ 1, 11 ]

slice 可以将伪数组转为真数组

var arr = {
    a: 1,
    b: 2,
    length: 2
}
var arr2 = Array.prototype.slice.call(arr)