[英]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.