对象方法

2020-04-27  本文已影响0人  w_小伍

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]
上一篇 下一篇

猜你喜欢

热点阅读