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

{"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中的键值对数组?


当前回答

这是我的解决方案,我有同样的问题,似乎这个解决方案为我工作。

yourObj = [].concat(yourObj);

其他回答

你可以使用_.castArray(obj)。

例子: _。castArray({'a': 1}); // => [{'a': 1}]

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 }
let objectKeys = Object.keys(obj);

let answer = objectKeys.map(value => {
    return [value + ':' + obj[value]]
});

你可以使用3个方法将对象转换为数组(任何人都可以参考,不仅是这个问题(第三个是最合适的,回答这个问题) 种(),Object.values (), andObject.entries ()

3种方法的示例

使用种()

const text= {
    quote: 'hello world',
    author: 'unknown'
};
const propertyNames = Object.keys(text);

console.log(propertyNames);
result
[ 'quote', 'author' ]

使用Object.values ()

const propertyValues = Object.values(text);

console.log(propertyValues);

结果

[ 'Hello world', 'unknown' ]

使用Object.entires ()

const propertyValues = Object.entires(text);

console.log(propertyValues);

结果

[ [ 'quote', 'Hello world' ], [ 'author', 'unknown' ] ]

你可以使用Object.values([]),如果你还不需要,你可能需要这个填充:

const objectToValuesPolyfill = (object) => {
  return Object.keys(object).map(key => object[key]);
};
Object.values = Object.values || objectToValuesPolyfill;

https://stackoverflow.com/a/54822153/846348

然后你可以这样做:

var object = {1: 'hello', 2: 'world'};
var array = Object.values(object);

记住,js中的数组只能使用数字键所以如果你在对象中使用了其他键那么这些键就会变成' 0,1,2…x ' '

例如,如果您有一个唯一的密钥,那么删除重复的密钥就很有用。

var obj = {};
object[uniqueKey] = '...';

下面是es6使用扩展操作符和Object.entries的“新”方法。

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

const dataSpread = [...Object.entries(data)];

// data spread value is now:
[
  [ '1', 5 ],  [ '2', 7 ],
  [ '3', 0 ],  [ '4', 0 ],
  [ '5', 0 ],  [ '6', 0 ],
  [ '7', 0 ],  [ '8', 0 ],
  [ '9', 0 ],  [ '10', 0 ],
  [ '11', 0 ], [ '12', 0 ]
]