我读了一个json文件(基本上是平面表)并动态嵌套数据。我得到类似于:
的嵌套数据[{key: "AAA", value: 100}, {key: "BBB", value: 200}, {key: "CCC", value: 150}]
通过索引访问密钥和/或值是没有问题的,例如dat[0].key
,dat[1].value
。但是如何通过不使用(因为不知道)其索引来直接访问值。即dat [“BBB”]。value或dat [“AAA”]。value
如果我仍然需要通过索引访问数据,那么键/值对的用处是什么。在我的情况下,这意味着,首先以某种方式确定特定键的索引,然后按键引用。
我很确定,这是一个非常愚蠢的问题,我为此道歉,但经过几天的网络搜索,我仍然无法找到答案。
非常感谢任何帮助
答案 0 :(得分:1)
可以通过对象在JS中实现地图的形式。
以下是一个例子:
var data = {
"key": "value"
}
console.log(data.key); // prints 'value'
console.log(data["key"]); // prints 'value'
您可以将数据解析为以下对象:
function parseDataIntoObject(dataArray) {
var data = {};
dataArray.forEach(
(object) => {
data[object.key] = object.value;
}
);
return data;
}
然后您可以获取data["AAA"]
等数据。
如果需要,我可以提供更多关于这个主题的例子。
答案 1 :(得分:1)
使用数组find方法:
let data = [{key: "AAA", value: 100}, {key: "BBB", value: 200}, {key: "CCC", value: 150}]
let item1 = data.find(x => x.key === 'AAA')
let item2 = data.find(x => x.key === 'BBB')
let item3 = data.find(x => x.key === 'CCC')
console.log(item1, item2, item3)
请注意:这只会返回匹配key
的对象的第一个实例。对于多个对象,请使用此处发布的其他解决方案之一。
答案 2 :(得分:0)
尝试类似
的内容function getByKey( arr, key )
{
var results = arr.filter( function( item ){ item.key == key });
var value = results ? results[0].value : ""
return value;
}
getByKey( data, "AAA" ); //this will return the value for AAA
答案 3 :(得分:0)
返回与键匹配的第一个对象。如果需要多个匹配对象的数组,可以根据需要进行更改
var data = [{key: "AAA", value: 100}, {key: "BBB", value: 200}, {key: "CCC", value: 150}];
var keyToFilter = "AAA";//could be anything
var resultObj = data.filter(function(obj){return obj.key === keyToFilter })[0];
答案 4 :(得分:0)
DO
const arr = [{key: "AAA", value: 100}, {key: "BBB", value: 200}, {key: "CCC", value: 150}]
const item = arr.filter(obj => obj.key === "BBB")[0];
console.log(item.value);
基本上,这会过滤数组中相同的键,然后通过第一项
获取值如果没有项目,请测试以下
if (item.length > 0) // ...