1.Object.assign()
用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象
Object.assign(target, ...sources);
target:目标对象 sources源对象
返回目标对象
如果target和sources有相同的key,sources会覆盖target
不会跳过那些值为 [null] 或 [undefined]的源对象
原始对象会改变
let target = { a:1,b:2 }
let sources = { c:3,d:4 }
let newObj = Object.assign(target,sources)
console.log(newObj) //{a: 1, b: 2, c: 3, d: 4}
console.log(target)//{a: 1, b: 2, c: 3, d: 4}
console.log(sources)//{c: 3, d: 4}
若不想改变原始对象,target用空对象
let target = { a:1,b:2 }
let sources = { c:3,d:4 }
let newObj = Object.assign({},target,sources)
console.log(newObj) //{a: 1, b: 2, c: 3, d: 4}
console.log(target)//{ a:1,b:2 }
console.log(sources)//{c: 3, d: 4}
2.Object.keys()
返回一个由一个给定对象的自身可枚举属性组成的数组
数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致
let obj1 = { a:1,b:2,c:3 }
let obj2 = { 100:1,b:2,200:3 }
console.log(Object.keys(obj1))//["a", "b", "c"]
console.log(Object.keys(obj2))// ["100", "200", "b"]
应用:
原始数据
let obj = {
k1: [ {x:1, y:1},{x:2, y:2} ],
k2: [ {x:3, y:3},{x:4, y:4} ]
}
变成:
let result = [
{name: "k1", data: [ {x:1, y:1},{x:2, y:2} ]},
{name: "k2", data: [ {x:3, y:3},{x:4, y:4} ]}
]
用Object.keys和map组合使用
let obj = {
k1: [ {x:1, y:1},{x:2, y:2} ],
k2: [ {x:3, y:3},{x:4, y:4} ]
}
let arr1 = []
Object.keys(obj).map(key => {
arr1.push({
name:key,
data:obj[key]
})
})
console.log(arr1)
3.Object.values()
方法返回一个给定对象自身的所有可枚举属性值的数组,
值的顺序与使用for...in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。
let obj1 = { a:1,b:2,c:3 }
console.log(Object.values(obj1))//[1, 2, 3]
网友评论