将对象转换为数组 - 维护命名键

时间:2017-02-03 02:45:23

标签: javascript jquery arrays json stringify

我正在将一个对象转换为一个数组。对象的键包含诸如" cool"之类的名称,如下所示:

var obj = {
  "cool": "Mustang",
  "family": "Station Wagon",
  "small": {
    0: "small car 1",
    1: "small car 2"
  }
};

转换时,返回的数组如下所示:

Array[3]
0:"Mustang"
1:"Station Wagon"
2:Object
    0:"small car 1" 
    1:"small car 2"

正如您在上面的数组中可以看到来自对象的键的名称,例如" cool"丢失了,而是用数字代替。此外,数组包含一个对象,我希望这个对象是数组中的一个数组。

我希望返回的数组改为:

Array[3]
"cool":"Mustang"
"family":"Station Wagon"
"small": Array[2]
    0:"small car 1" 
    1:"small car 2"

我非常感谢你的帮助。可以在此处找到代码的小提琴:https://jsfiddle.net/v02q4sy2/8/

2 个答案:

答案 0 :(得分:7)

根据您提供的代码,看起来您只需要在包含相应键/值对的map方法中返回一个对象:

Updated Example

var arr = $.map(obj, function(value, key) {
  return { [key]: value };
});

你不需要jQuery。这是一个使用普通JavaScript的简单示例,它使用native .map() methodObject.keys()从对象中检索可映射的键的数组:

Updated Example

var arr = Object.keys(obj).map(function (key) {
  return { [key]: obj[key] };
});

答案 1 :(得分:3)

如果您处于可以使用最新JavaScript功能的环境中,使用Object.entries非常容易。

var obj = {"cool":"Mustang","family":"Station Wagon","small":{0:"small car 1",1:"small car 2"}}

var arr = Object.entries(obj);

console.log(arr);

https://jsfiddle.net/eszfLj17/1/

Object.entries()