javascript - 获取javascript中两个嵌套数组之间的差异

标签 javascript arrays for-loop

我想了解两个嵌套数组之间的区别。

let firstArray = {
  "family": "BLUE",
  "globalThreshold": "2.0",
  "levelData": [
    {
      "name": "India",
      "value": "4.0",
      "count": [
        {
          "id": "21",
          "countName": "ABC",
          "countThreshold": "7.0"
        },
        {
          "id": "22",
          "workscopeName": "DEF",
          "countThreshold": "4242"
        }
      ]
    },
    {
      "name": "FEDERAL EXPRESS CORPORATION",
      "value": "1.0",
      "count": [
        {
          "id": "5",
          "countName": "ABC",
          "countThreshold": "2.0"
        },
        {
          "id": "6",
          "countName": "DEF",
          "countThreshold": "3.0"
        }
      ]
    }
  ]
}



 let changedArray= {
      "family": "BLUE",
      "globalThreshold": "2.0",
      "levelData": [
        {
          "name": "India",
          "value": "5",
          "count": [
            {
              "id": "21",
              "countName": "ABC",
              "countThreshold": "7.0"
            },
            {
              "id": "22",
              "workscopeName": "DEF",
              "countThreshold": "4242"
            }
          ]
        },
        {
          "name": "FEDERAL EXPRESS CORPORATION",
          "value": "1.0",
          "count": [
            {
              "id": "5",
              "countName": "ABC",
              "countThreshold": "60"
            },
            {
              "id": "6",
              "countName": "DEF",
              "countThreshold": "3.0"
            }
          ]
        }
      ]
    }

预期结果:

let finalArray = {
  "family": "BLUE",
  "globalThreshold": "2.0",
  "levelData": [
    {
      "name": "India",
      "value": "5",
      "count": []
    },
    {
      "name": "FEDERAL EXPRESS CORPORATION",
      "value": "1.0",
      "count": [
        {
          "id": "5",
          "countName": "ABC",
          "countThreshold": "60"
        } 
      ]
    }
  ]
}

我想根据“levelData”数组中的 value 属性和 count 数组中的 countThreshold 来跟踪差异。

我尝试在 for 循环中重复两个数组,但无法在其嵌套时同时重复 Any。请告诉我任何快速方法。 谢谢

最佳答案

尝试使用 map为每个 levelData 迭代在 firstArray 中找到他们各自的通过 name然后 filter通过匹配其属性:

let firstArray={"family":"BLUE","globalThreshold":"2.0","levelData":[{"name":"India","value":"4.0","count":[{"id":"21","countName":"ABC","countThreshold":"7.0"},{"id":"22","workscopeName":"DEF","countThreshold":"4242"}]},{"name":"FEDERAL EXPRESS CORPORATION","value":"1.0","count":[{"id":"5","countName":"ABC","countThreshold":"2.0"},{"id":"6","countName":"DEF","countThreshold":"3.0"}]}]};
let changedArray={"family":"BLUE","globalThreshold":"2.0","levelData":[{"name":"India","value":"5","count":[{"id":"21","countName":"ABC","countThreshold":"7.0"},{"id":"22","workscopeName":"DEF","countThreshold":"4242"}]},{"name":"FEDERAL EXPRESS CORPORATION","value":"1.0","count":[{"id":"5","countName":"ABC","countThreshold":"60"},{"id":"6","countName":"DEF","countThreshold":"3.0"}]}]}

var arr = changedArray.levelData.map(ele => {
   var count = firstArray.levelData.find(x => x.name == ele.name).count;
   ele.count = ele.count.filter(x => !count.some(y => x.id == y.id && x.countThreshold == y.countThreshold));
   return ele;
 })
 
 console.log(arr);

关于javascript - 获取javascript中两个嵌套数组之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49188281/

相关文章:

c - 仅 1 个元素存储的数组超出其应有的数量

javascript - 有条件地遍历数组

python - 两个字符串中出现相同字符的情况

javascript - 关于 onmouseout 事件

javascript - 可以在 flexboxes 中使用相对定位吗?

javascript - 如何使用sequelize 将空数组转换为空JSON 对象?

javascript - 有人可以解释以下 javascript 代码片段吗? (小白)

c++ - 在没有默认构造函数的类类型的 #define 中初始化大小的非静态成员数组

c++ - 使用 for as while with counter

javascript - 2 列布局,如何应用边框,使更高的 div 决定边框高度