使用标识符遍历 JSON 对象并使用标识符获取特定值

伦吉斯

遍历其中包含嵌套数组对象的 JSON 对象。标签设置值,它是与需要返回相关联的级别标识符指标值。如果在第二级找到标签,则在第二级找到指标,并应返回

我无法获得有关如何遍历对象并返回特定值的逻辑

function getMetrics(arr, label) {

  for (let i = 0; i < arr.length; i++) {
    if (arr[i].label === label) {
      return arr[i].metricsValue;
    } else if (arr[i].children) {
      return getMetrics(arr[i].children, label);
    }
  }

  return "Not found";
}
const selectedMetrics = getMetrics(dataObj.series, '1');

考虑使用JSON对象子女指定当前级别的子水位。

const dataObj = {
  series: [
    {
      label: "A",
      metricsValue: "ma",
      children: [
        {
          label: "A-B",
          value: 6,
          metricsValue: "ma-mb"
        },
        {
          label: "A-B-C",
          metricsValue: "ma-mb-mc",
          children: [
            {
              label : "A-B-C-D",
              value: 6,
              metricsValue: "ma-mb-mc-md"
            }
          ]
        }
      ]
    },
    {
      label: "1",
      metricsValue: "m1",
    }
  ]
};

预期结果:当输入为“1”时,应返回

selectedMetrics= "m1"

输入:“ABCD”

selectedMetrics= "ma-mb-mc-md"

尼基尔

您可以执行深度优先搜索(DFS) 或广度优先搜索(BFS) 以metricValues在任何级别进行查找

在这里,我使用 DFS 来查找所需的值。这适用于具有任何嵌套级别的数据。

const dataObj = { series: [ { label: "A", metricsValue: "ma", children: [ { label: "A-B", value: 6, metricsValue: "ma-mb" }, { label: "A-B-C", metricsValue: "ma-mb-mc", children: [ { label: "A-B-C-D", value: 6, metricsValue: "ma-mb-mc-md" } ] } ] }, { label: "1", metricsValue: "m1"} ] };

function getMetrics(arr, label) {
  var result;
  
  for (let i = 0; i < arr.length; i++) {
    if (arr[i].label === label) {
      return arr[i].metricsValue;
    } else if (arr[i].children) {
      result = getMetrics(arr[i].children, label);
      if (result) {
       return result;
      }
    }
  }

  return null;
}

console.log("selectedMetrics for 'A' = " + getMetrics(dataObj.series, 'A'));
console.log("selectedMetrics for 'A-B' = " + getMetrics(dataObj.series, 'A-B'));
console.log("selectedMetrics for 'A-B-C' = " + getMetrics(dataObj.series, 'A-B-C'));
console.log("selectedMetrics for 'A-B-C-D' = " + getMetrics(dataObj.series, 'A-B-C-D'));
console.log("selectedMetrics for '1' = " + getMetrics(dataObj.series, '1'));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用SwiftyJSON的未解析标识符JSON

来自分类Dev

Swift:使用未解析的标识符“ json”

来自分类Dev

使用JSON数据的For Loop返回意外的标识符

来自分类Dev

Swift:使用未解析的标识符“ json”

来自分类Dev

使用未解析的标识符 'json' (Swift 3) (Alamofire)

来自分类Dev

解析json时使用未解析的标识符

来自分类Dev

AlamofireObjectMapper:带有标识符的JSON

来自分类Dev

SyntaxError:JSON解析错误:意外的标识符“对象”

来自分类Dev

用Jackson解析没有标识符的JSON对象

来自分类Dev

使用数字作为类型标识符对serde进行反序列化json

来自分类Dev

在 swift4 中使用未解析的标识符“json”

来自分类Dev

获取对象的唯一标识符

来自分类Dev

为获取对象属性标识符而不是属性值?

来自分类Dev

获取辅助标识符的最新“值”

来自分类Dev

获取辅助标识符的最新“值”

来自分类Dev

“使用未解析的标识符'领域'”

来自分类Dev

使用未声明的标识符AFHTTPClient

来自分类Dev

使用未解析的标识符NSCalendarUnitDay

来自分类Dev

NSSearchPathDirectory使用无法解析的标识符

来自分类Dev

使用未解析的标识符PFImageView

来自分类Dev

“使用未声明的标识符”

来自分类Dev

使用未解析的标识符“ GGLContext”

来自分类Dev

使用未解决的标识符“ FIRInstanceIDAPNSTokenTypeSandbox”

来自分类Dev

使用未声明的标识符“连接”

来自分类Dev

使用未声明的标识符“警报”

来自分类Dev

使用未声明的标识符“ UIUserInterfaceIdiomTV”

来自分类Dev

使用未解析的标识符ParseCrashReporting

来自分类Dev

使用未解析的标识符“ AVPlayer”

来自分类Dev

使用未声明的标识符“ SKSpriteNode”

Related 相关文章

热门标签

归档