javascript 从字符串路径获取JSON值

h9a6wy2h  于 2023-03-16  发布在  Java
关注(0)|答案(3)|浏览(155)

我需要从我的变量开始提取一个JSON值。例如,我有这个json

const myJson = {
  "id": "someID",
  "organizations": [
    "0": {
      "id": "organizationId",
      "name": "organizationName"
    },
    "1": {
      ...
    },
    ...
  ] 
}

这个变量

var pathOfKey = ["organizations","0","id"];

如何从变量“pathOfKey”中获取“organizationId”的值?
我事先不知道我的键的路径是什么,但是我有一个包含这个信息的变量,我需要得到我的数组的所有组织ID。

bogh5gae

bogh5gae1#

let obj = {
"a": {"b": "value"}
}

let tmpObj = obj;
let arr = ["a", "b"];

arr.forEach((objKey) => {
  if (tmpObj[objKey] !== undefined) {
    tmpObj = tmpObj[objKey];
  }
});

console.log(tmpObj);

类似这样的东西就可以完成这项工作。而且,它可以用递归函数来完成

ibps3vxo

ibps3vxo2#

基本上,您需要迭代pathOfKey数组,并同时遍历数组中带有键的对象。

function getValueFromObject(obj, path) {
  let currentNode = obj;

  for (key of path) {
    if (!currentNode.hasOwnProperty(key)) {
      return null;
    }
    currentNode = currentNode[key];
  }
  
  return currentNode;
}

getValueFromObject(myJson, pathOfKey)
osh3o9ms

osh3o9ms3#

最简单的解决方案可能是使用reduce()

const value = pathOfKey.reduce((item, key) => item[key], myJson);

相关问题