js

JS中将对象转化为数组

2019-03-04  本文已影响0人  墨芊baby
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的值为数组的索引值
上一篇下一篇

猜你喜欢

热点阅读