美文网首页js
JS中将对象转化为数组

JS中将对象转化为数组

作者: 墨芊baby | 来源:发表于2019-03-04 15:34 被阅读0次
    • 如何把一个对象转化为数组,实例:
    obj:{
      name: 'aaa',
      height: 190,
      sex: 'man',
    }
    转化为:
    objNew:[
      { name: 'aaa' },
      { height: 190 },
      { sex: 'man' },
    ]
    

    对象的两种取值方式
    JS中对象有两种取值方式,通过在.后面直接加属性名取值,这也是我们最常使用的一种方式,例如:

    let obj = {name: 'aaa'};
    console.log(obj.name);  //aaa   
    

    这是最普通的一种方式,还有一种方式我们用的不太多,就是使用[]包住属性名取值,类似于数组那样,例如:

    let obj = {name: 'aaa'};
    console.log(obj['name']);  //aaa  注意此处如果是变量的话不要加引号
    

    如果对于一个已知的对象来说,是没什么区别的,如果我们需要的对象的key是变量,就需要第二种取值的方式。

    我们文章开始例子中的对象是:

    obj:{
      name: 'aaa',
      height: 190,
      sex: 'man',
    }
    

    如果目标数组只是为了得到对象的key的集合或者value的集合还是相对容易的

    for(let i  in this.obj){
      this.objNew.push(this.obj[i]) //值 ['aaa' 190 'man']
      this.objNew.push(i) //属性  ['name' 'height' 'sex']
    }
    //也可写下面这一句得到key或value的集合数组
    this.objNew = Object.values(this.obj) 
    this.objNew = Object.keys(this.obj) 
    

    如果像我文中开始的需求的话就只需要改变一下push进去的内容为一个对象即可

    var arr = []
    for (let i in this.obj) {
        let o = {};
        o[i] = obj[i]; //即添加了key值也赋了value值 o[i] 相当于o.name 此时i为变量
        arr.push(o)
    }
    console.log(arr); [{name: 'aaa'},{'height: 190'},{sex:'man'}]
    
    还可以这样写:
    for(let i in this.obj){
        this.objNew.push({[i]:this.obj[i]})
    }
    //注意for in 也可以是数组,key的值为数组的索引值
    

    相关文章

      网友评论

        本文标题:JS中将对象转化为数组

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