繁体   English   中英

如何在javascript中将对象转换为数组?

[英]how can i convert object into an array in javascript?

我以这种方式从 firebase 获得了对象,我需要转换为一个数组,我使用了带有地图的 foreach,但我没有成功。 我得到了 0 长度的数组。

0: {id: "1", name: "Fever"}
1: {id: "2", name: "Cough"}
2: {id: "3", name: "Headache"}
3: {id: "4", name: "Stomach Pain"}

我使用了下面的方法,但它不起作用

let result = [];

arr.forEach(item => {
  let resObj = result.find(resObj => resObj.Name === item.Name);
  resObj ? resObj.Count++ : result.push({'Name':item.Name, 'Value': item.Value, 'Count': 1});
});

console.log(result);

我需要这样的输出

[
{id: "1", name: "Fever"},{id: "2", name: "Cough"},{id: "3", name: "Headache"},{id: "4", name: "Stomach Pain"}
]

你可以这样做:

 let obj = { 0: { id: "1", name: "Fever" }, 1: { id: "2", name: "Cough" }, 2: { id: "3", name: "Headache" }, 3: { id: "4", name: "Stomach Pain" } }; let arr = []; for (let key in obj) { arr.push(obj[key]); } console.log(arr);

for ... in 循环遍历每个 obj 键并将 obj 的所有值推送到 arr 中。

您可以使用Object.values() ,但是,这并不能保证数组与您的对象具有相同的键。 例如,如果您遇到这种情况:

{
  0: {id: "2", name: "Cough"},
  2: {id: "1", name: "Fever"} 
}

...那么您的结果可能如下所示(缺少索引 2):

[{id: "1", name: "Fever"}, {id: "2", name: "Cough"}]

因此,它不遵守对象中提供的索引值,而是从对象中获取值并从这些值创建一个数组。 相反,如果您想考虑对象的键,您可以使用Object.assign()将对象与数组合并,如果缺少特定索引,则给出一个空值。 以下还保证订单将基于索引值:

 const obj = {0: {id: "1", name: "Fever"}, 1: {id: "2", name: "Cough"}, 2: {id: "3", name: "Headache"}, 3: {id: "4", name: "Stomach Pain"}}; console.log(Object.assign([], obj));

只需使用Object.values

 let obj = { 0: { id: "1", name: "Fever" }, 1: { id: "2", name: "Cough" }, 2: { id: "3", name: "Headache" }, 3: { id: "4", name: "Stomach Pain" } }; const res = Object.values(obj); console.log(res);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM