Javascript将对象映射转换为数组

Javascript将对象映射转换为数组,javascript,Javascript,例如,我有一个如下的对象映射: { "key1" : { data: "data1", extra: "none" }, "key2" : { data: "data2", extra: "none" }, "key3" : { data: "data3", extra: "none" }, "key4" : { data: "data4", extra: "none" }, }; 是否有一种方便的方法将其转换为如下所示的数组: [ { "key1"

例如,我有一个如下的对象映射:

{
    "key1" : { data: "data1", extra: "none" },
    "key2" : { data: "data2", extra: "none" },
    "key3" : { data: "data3", extra: "none" },
    "key4" : { data: "data4", extra: "none" }, 
};
是否有一种方便的方法将其转换为如下所示的数组:

[
    { "key1" : { data: "data1", extra: "none" }},
    { "key2" : { data: "data2", extra: "none" }},
    { "key3" : { data: "data3", extra: "none" }},
    { "key4" : { data: "data4", extra: "none" }}, 
];

我有一个需要数组的函数,但是我从第三方插件接收的数据是在对象数组中。如果有一种简单的方法来完成两者之间的转换,那就太好了。

迭代对象中的属性并将它们推送到数组中:

var myArray=[];
for (k in myObj) {
    if(myObj.hasOwnProperty(k)){
        var newObj = {};
        newObj[k] = myObj[k];
        myArray.push(newObj);
    }
}

迭代对象中的属性并将其推送到数组:

var myArray=[];
for (k in myObj) {
    if(myObj.hasOwnProperty(k)){
        var newObj = {};
        newObj[k] = myObj[k];
        myArray.push(newObj);
    }
}

在ECMAscript 5中更为简洁:

function toArray (obj) {
  return Object.keys (obj).map (function (k) {
    var v = {}; v[k] = obj[k]; return v; 
  });
}

在ECMAscript 5中更为简洁:

function toArray (obj) {
  return Object.keys (obj).map (function (k) {
    var v = {}; v[k] = obj[k]; return v; 
  });
}


转换为javascript数组或其他某种语言?+1@unipartsandev是一个javscript数组。您是否希望创建一个类似[key1,{data:data1,extra:none}]的多维数组?我注意到您使用了{key1,{data:data1,extra:none}},这是无效的。不知怎的,我很怀疑您的函数是否需要第二个示例中的表单,因为这很难处理。是的,它是一个数组,但可能不是函数想要的那种数组。它是一个对象数组,每个对象都没有已知的属性,因此函数必须迭代每个对象中的所有属性,以找出它有什么。这是为函数设计参数的糟糕方法,因此要么函数设计得很糟糕,要么你不理解它真正想要的是什么。@jfriend00实际上,我两者都需要。我有两个函数可供选择,其中一个函数的输入是我问的问题,另一个函数的输入是你所说的多维数组。我将问多维数组的另一个问题。转换为javascript数组或其他语言?+1@unipartsandev是一个javscript数组。您是否希望创建类似[key1,{data:data1,extra:none}]的多维数组?我注意到您使用了{key1,{data:data1,extra:none}},这是无效的。不知怎的,我很怀疑您的函数是否需要第二个示例中的表单,因为这很难处理。是的,它是一个数组,但可能不是函数想要的那种数组。它是一个对象数组,每个对象都没有已知的属性,因此函数必须迭代每个对象中的所有属性,以找出它有什么。这是为函数设计参数的糟糕方法,因此要么函数设计得很糟糕,要么你不理解它真正想要的是什么。@jfriend00实际上,我两者都需要。我有两个函数可供选择,其中一个函数的输入是我问的问题,另一个函数的输入是你所说的多维数组。我将问多维数组的另一个问题。虽然您回答了问题,但我怀疑这种形式的数据是否真的是函数所需要的。@dk123请注意,该答案依赖于ES5的密钥,而IE8和更早版本不支持ES5的密钥。你可以看到一个完整的兼容性表+1谢谢你的链接,我不知道。考虑到跨主要浏览器的兼容性,我已经删除了我的最后一条评论,并最终确定了我的答案。@dk123没问题,请记住在使用最近添加的任何酷JS功能之前检查该网站。顺便说一句,你不必每次在评论中都提到你的+1d或-1d,投票应该是匿名的:虽然你回答了问题,但我怀疑这种形式的数据是否真的是函数想要的。@dk123请注意,答案依赖于ES5的密钥,这在IE8和早期版本中不受支持。你可以看到一个完整的兼容性表+1谢谢你的链接,我不知道。考虑到跨主要浏览器的兼容性,我已经删除了我的最后一条评论,并最终确定了我的答案。@dk123没问题,请记住在使用最近添加的任何酷JS功能之前检查该网站。顺便说一句,你不必每次在评论中提到你的+1d或-1d,投票应该是匿名的: