键值对对象如何转换成数组对象

{ 12: a, 32: b, 43: c}

需要转换成[{12:a}, {32:b}, {43: c}]

eslint好像禁止使用for in;
谢谢各位了

阅读 8.4k
3 个回答
// 最好不用`for-in`,`for-in`会把原型链的所有可枚举的属性枚举出来。
// 可以用ES5的`Object.keys()`,只枚举当前对象的可枚举是属性。
var obj = { 12: 'a', 32: 'b', 43: 'c'};
var result = Object.keys(obj).map((el) => {
    return {[el]: obj[el]};
});
console.log(result);
// 也可以使用`ES8`的`Object.entries()`
var result2 = Object.entries(obj).map(el => {
    console.log(el[0], el[1]);
    return {[el[0]]: el[1]};
});
console.log(result2);

更多Object对象API的用法,可以参考我之前写的文章JavaScript 对象所有API解析

eslint不限制for-in,只要在for-in里面加if判断就可以
你还可以用Object.keys

var obj={ 12: "a", 32: "b", 43: "c"};
var arr=[];
for(var i in obj){
    if(i==undefined){
        break
    } 
    var tt={};
    tt[i]=obj[i];
    arr.push(tt)
};
console.log(arr);//[{12:"a"},{32:"b"},{43:c}]
推荐问题
宣传栏