按属性将对象数组与另一个对象的键进行比较

时间:2016-07-03 16:50:46

标签: javascript arrays angularjs foreach underscore.js

我想将 data.examples 数组对象 name.value 属性 wcObject.notCoveredList 进行比较key,如果密钥匹配,我想将 wcObject的所有匹配值推送到数组,以便在UI中显示。如果密钥不匹配,我希望data.examples数组对象的 name.desc属性值由删除 未涵盖<推送/ em>最后的文字。

    data = {
        examples : [
          {
            name: {
              value:"someOne",
              desc: "some random word not covered"
            },
            type: {
              value:"General",
              desc:"General"
            }
          }, {
            name: {
              value:"secondOne",
              desc: "second on in the queue not covered"
            },
            type: {
              value:"General",
              desc:"General"
            }
          }, {
            name: {
              value:"thirdOne",
              desc: "third one from the last not covered"
            },
            type: {
              value:"General",
              desc:"General"
            }
          }
        ]

      }

 wcObject = {
    notCoveredList : [
      { someOne: "anyone can start " },
      { secondOne: "second One cannot start" },
      { thirdOne: "third One can be allowed" }
    ]
  }

1 个答案:

答案 0 :(得分:0)

所以,这段代码:

  1. 构建过滤器对象。我们抓住了所有的钥匙 data.examples,并将它们设置在单个对象上(使用 一个未定义的值),以便我们可以用一个单独查找这些键 当我们需要过滤时,hasOwnProperty()调用而不是迭代数组。
  2. name.desc数组的每个成员映射到其自己的name.value属性或[去除&#39;未涵盖&#39;] wcNotCoveredKeys = wcObject.notCoveredList.reduce((memo, item) => { // value is empty for all, we only care about keys. memo[Object.keys(item)[0]] = undefined; return memo; }, {}) // having built up our lookup table of those not covered, we continue: forUI = data.examples.map(example => { if (wcNotCoveredKeys.hasOwnProperty(example.name.value)) { return example.name.value; } else { notCoveredString = example.name.desc; cutOutIndex = notCoveredString.indexOf(' not covered'); return notCoveredString.slice(0, cutOutIndex) } }); 财产。
  3. ["someOne", "second on in the queue", "thirdOne"]

    (更新为整合字符串切片)

    为了清楚起见:如果你从wcObject.notCoveredList中删除了第二个项目,那么你输入forUI的输出(给定你提供的示例数据结构/值)将是

    @echo off setlocal enableDelayedExpansion FOR /f "skip=1 tokens=5 delims=:," %%I IN (vers.json) DO IF NOT DEFINED ver SET "ver=%%I" set ver=%ver:"=% set ver=%ver: =% echo !ver!