gpt4 book ai didi

javascript - 如何使用 JavaScript 访问 JSON 数据中嵌套数组中的特定元素?

转载 作者:行者123 更新时间:2023-12-01 01:14:54 28 4
gpt4 key购买 nike

我有 JSON 数据,其结构如下。意图是查找特定的数据点,例如年利润5000。

我想通过按名称查找列来做到这一点,例如“profit”,确定列索引(示例中为 3),然后使用列索引选择“data”数组的第二个节点(“annual”)中的第 n 个(第 3 个)元素。

如何使用 Javascript 中的 findIndex() 函数来执行此操作(请参阅下面代码的关键部分)?

JSON 数据:

{
"datatable": {
"data": [
[
"AAPL",
"quarterly",
1000,
2000
],
[
"AAPL",
"annual",
5000,
10000
]
],
"columns": [{
"name": "ticker"
"type": "String"
},
{
"name": "timedim"
"type": "String"
},
{
"name": "profit",
"type": "Integer"
},
{
"name": "revenue",
"type": "Integer"
}
]
}
}

JavaScript 代码:

  // daten contains the "data" array of the JSON dataset
// spalten contains the "columns" array of the JSON dataset

var i = spalten.findIndex(obj => obj.name == "profit");
output += '<p>Annual profit AAPL: ' + daten[i] + '</p>';
elroot.innerHTML += output;

最佳答案

您有二维数组,因此,您需要两个索引:

const json = {
"datatable": {
"data": [
[
"AAPL",
"quarterly",
1000,
2000
],
[
"AAPL",
"annual",
5000,
10000
]
],
"columns": [{
"name": "ticker",
"type": "String"
},
{
"name": "timedim",
"type": "String"
},
{
"name": "profit",
"type": "Integer"
},
{
"name": "revenue",
"type": "Integer"
}
]
}
}
var profitIndex = json.datatable.columns.findIndex(item => item.name == 'profit');
var annualIndex = json.datatable.data.findIndex(array => array.indexOf('annual') > -1);
var annualProfit = json.datatable.data[annualIndex][profitIndex];

如果您需要一个函数,它可能如下所示:

var getValueFromJson = function (json, columnName, dataMarker) {
var columnIndex = json.datatable.columns.findIndex(item => item.name == columnName);
var dataMarkerIndex = json.datatable.data.findIndex(array => array.indexOf(dataMarker) > -1);
if (columnIndex < 0 || dataMarkerIndex < 0) {
return null;
}
return json.datatable.data[dataMarkerIndex][columnIndex];
}

console.log(getValueFromJson(json, 'profit', 'quarterly'));
console.log(getValueFromJson(json, 'profit', 'annual'));
console.log(getValueFromJson(json, 'revenue', 'quarterly'));
console.log(getValueFromJson(json, 'revenue', 'annual'));

上面的代码打印:

> 1000
> 5000
> 2000
> 10000

关于javascript - 如何使用 JavaScript 访问 JSON 数据中嵌套数组中的特定元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54857976/

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