gpt4 book ai didi

javascript - 如何在数组中迭代两次

转载 作者:行者123 更新时间:2023-11-30 07:13:44 25 4
gpt4 key购买 nike

如何通过在数组中迭代两次来从数组中获取数据。例如我有一个数据集:

var data = [
{"Fruits ":"Apples","Fresh":"12","Rotten":"5","Total":"17"},
{"Fruits ":"Oranges","Fresh":"34","Rotten":"6","Total":"40"},
{"Fruits ":"Strawberries","Fresh":"67","Rotten":"8","Total":"75"},
{"Fruits ":"Bananas","Fresh":"23","Rotten":"5","Total":"28"}
]

首先,我想在右侧进行迭代并获取所有键,直到第一个对象的末尾,然后向下迭代,以便获得键的所有值,这样我就得到了

预期输出

 [{ 'name': 'Fresh',
'data': [12, 34, 67, 23]
},
{
'name': 'Rotten',
'data': [5, 6, 8, 5]
},
{
'name': 'total',
'data': [17, 40, 75, 28]
}]

到目前为止我已经试过了:

    var categorie = []
var seriesNames = []
var series = []

for(var i=0; i<data.length; i++){
categorie.push(_.values(data[i])[0])
}

for(i=1; i<data.length; i++){
seriesNames.push(_.keys(data[0])[i])
}

但我不知道如何获取数据数组并将其与 seriesName 连接。实时复制:plunker

编辑键、值和数据长度是可变的,因为我处理的是动态数据。

最佳答案

您可以使用组数组并将其用于结果数组中的正确分组。

var data = [{ "Fruits ": "Apples", "Fresh": "12", "Rotten": "5", "Total": "17" }, { "Fruits ": "Oranges", "Fresh": "34", "Rotten": "6", "Total": "40" }, { "Fruits ": "Strawberries", "Fresh": "67", "Rotten": "8", "Total": "75" }, { "Fruits ": "Bananas", "Fresh": "23", "Rotten": "5", "Total": "28" }],
groups = ["Fresh", "Rotten", "Total"],
result = [];

data.forEach(function (a) {
groups.forEach(function (b, i) {
result[i] = result[i] || { name: b, data: [] };
result[i].data.push(+a[b]);
});
});

console.log(result);

只是对动态属性的提案略有改动。它只接受数量有限的属性。

var data = [{ "Fruits ": "Apples", "Fresh": "12", "Rotten": "5", "Total": "17" }, { "Fruits ": "Oranges", "Fresh": "34", "Rotten": "6", "Total": "40" }, { "Fruits ": "Strawberries", "Fresh": "67", "Rotten": "8", "Total": "75" }, { "Fruits ": "Bananas", "Fresh": "23", "Rotten": "5", "Total": "28" }],
result = [];

data.forEach(function (a) {
Object.keys(a).forEach(function (k) {
if (isFinite(a[k])) {
if (!this[k]) {
this[k] = { name: k, data: [] };
result.push(this[k]);
}
this[k].data.push(a[k]);
}
}, this);
}, Object.create(null));

console.log(result);

关于javascript - 如何在数组中迭代两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38205954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com