- 如何把一个对象转化为数组,实例:
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的值为数组的索引值