我想像这样转换一个对象:

{"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0}

输入一个键值对数组,如下所示:

[[1,5],[2,7],[3,0],[4,0]...].

如何将对象转换为JavaScript中的键值对数组?


当前回答

最好的办法是:

var obj = {“1”:5,“2”:7,“3”:0,“4”:0,“5”:0,“6”:0,“7”:0,“8”:0,“9”:0,“10”:0,“11”:0,“12”:0} var result = Object.entries(obj); 控制台.log(结果);

如图所示,调用条目将根据调用者的请求返回[key, value]对。

或者,也可以调用Object.values(obj),它只返回值。

其他回答

你可以使用Object.keys()和map()来做到这一点

var obj = {“1”:5,“2”:7,“3”:0,“4”:0,“5”:0,“6”:0,“7”:0,“8”:0,“9”:0,“10”:0,“11”:0,“12”:0} var result = Object.keys(obj).map((key) => [Number(key), obj[key]]); 控制台.log(结果);

const persons = { 
    john: { age: 23, year:2010},
    jack: { age: 22, year:2011},
    jenny: { age: 21, year:2012}
}
const resultArray = Object.keys(persons).map(index => {
    let person = persons[index];
    return person;
});

//use this for not indexed object to change array

使用对象。以键值格式获取Object的每个元素,然后像这样映射它们:

var obj = {“1”:5,“2”:7,“3”:0,“4”:0,“5”:0,“6”:0,“7”:0,“8”:0,“9”:0,“10”:0,“11”:0,“12”:0} var res = Object.entries(obj).map(([k, v]) => ([Number(k), v])); console.log(res);

但是,如果你确定键是按递进顺序排列的,你可以使用Object。values和Array#map来做这样的事情:

var obj ={“2”,“1”:5:7,“3”:0,“4”:0,“5”:0,“6”:0,“7”:0,“8”:0,“9”:0,“10”:0,“11”:0,“12”:0}; // idx是索引,你可以使用任何逻辑来增加它(从0开始) let result = Object.values(obj)。Map ((e, idx) => ([++idx, e])); console.log(结果);

如果你正在使用lodash,它可以像这样简单:

var arr = _.values(obj);

使用for in

var obj = { "10":5, "2":7, "3":0, "4":0, "5":0, "6":0, "7":0,
            "8":0, "9":0, "10":0, "11":0, "12":0 };

var objectToArray = function(obj) {
    var _arr = [];

    for (var key in obj) {
        _arr.push([key, obj[key]]);
    }
    return _arr;
}

console.log(objectToArray(obj));