js数组问题

let arr1 = [
  {
    id: 1,
    book: [
      {
        bookid: 1,
        state: 0,
      },
      {
        bookid: 2,
        state: 0,
      },
      {
        bookid: 3,
        state: 0,
      },
      {
        bookid: 4,
        state: 0,
      },
    ],
  },
  {
    id: 2,
    book: [
      {
        bookid: 1,
        state: 0,
      },
      {
        bookid: 2,
        state: 0,
      },
      {
        bookid: 3,
        state: 0,
      },
      {
        bookid: 4,
        state: 0,
      },
    ],
  },
  {
    id: 3,
    book: [
      {
        bookid: 1,
        state: 0,
      },
      {
        bookid: 2,
        state: 0,
      },
      {
        bookid: 3,
        state: 0,
      },
      {
        bookid: 4,
        state: 0,
      },
    ],
  },
];

let arr2 = [
  {
    pageId: 1,
    numId: 2,
    state: 1,
  },
  {
    pageId: 1,
    numId: 3,
    state: 1,
  },
  {
    pageId: 1,
    numId: 1,
    state: 0,
  },
  {
    pageId: 1,
    numId: 7,
    state: 1,
  },
  {
    pageId: 2,
    numId: 1,
    state: 1,
  },
];

arr1和arr2 两个数组
根据需求(arr1的id对应arr2的pageId,arr1的bookid对应arr2的numId)把arr2 数组中符合条件的state值写入arr1 里

比如 arr1 里的第一条中 (arr1[0].id 和 arr1[0].book[2].bookid )的id分别是1和3
对应arr2 的就是 arr2[1]的 pageId: 1, numId: 3把这条的state值写入前面的数组中。

阅读 1.6k
1 个回答
arr1.forEach(item=>{
    item.book.forEach(book=>{
        var findItem = arr2.find(v=>v.pageId == item.id && v.numId == book.bookid)
//         console.log(findItem);
        if(findItem)
            book.state = findItem.state;
    })
})
console.log(arr1)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题