美文网首页
对象方法

对象方法

作者: w_小伍 | 来源:发表于2020-04-27 15:00 被阅读0次

    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]
    

    相关文章

      网友评论

          本文标题:对象方法

          本文链接:https://www.haomeiwen.com/subject/gmuywhtx.html