比较两个数组,并根据第一个数组ID Angualr将新值添加到第二个数组

时间:2020-08-08 05:57:41

标签: javascript angular

您好我想遍历两个数组并分别找到每个数组的id和fieldId时,我需要根据arrayA Id构造一个带有documentId和新值的arrayB 例如:如果arrayA具有三个ID(1,2,3),而arrayB具有两个fieldId(1,3),则结果应为arrayB =([documentID,yes,no,yes],[documentID,no,no,yes ])。在arrayB中,第一个值应为documentId,其余应为基于arrayA的ID的值

下面是arrayA和arrayB:-

let arrayA = [{
    id: 13896,
    localeData: [],
    mnemonicCode: "FILD_NONIND_LNAM"

  },
  {
    id: 13899,
    localeData: [],
    mnemonicCode: "FILD_NONIND_LNAM"

  },
  {
    id: 13900,
    localeData: [],
    mnemonicCode: "FILD_NONIND_LNAM"

  },
  {
    id: 13919,
    localeData: [],
    mnemonicCode: "FILD_NONIND_LNAM"

  },




]

let arrayB = [{
    documentId: 13990,
    localeData: [],
    fieldId: 13900,
    mnemonicCode: "FILD_NONIND_LNAM"

  },
  {
    documentId: 13990,
    localeData: [],
    fieldId: 13919,
    mnemonicCode: "FILD_NONIND_LNAM"

  },
  {
    documentId: 14004,
    localeData: [],
    fieldId: 13900,
    mnemonicCode: "FILD_NONIND_LNAM"

  },
  {
    documentId: 14004,
    localeData: [],
    fieldId: 13899,
    mnemonicCode: "FILD_NONIND_LNAM"

  }
]

上面是两个数组,其中arrayA具有id,arrayB具有FieldId和DocumentId

以下是结果:-

let result = [
  [
    new MetaCheckbox({
      documentId: 13990,
      checked: false,
    }),
    new MetaLabel({
      fieldId: 13896
    }),
    new MetaLabel({
      fieldId: 13899
    }),
    new MetaCheckbox({
      checked: true,
      fieldId: 13900
    }),
    new MetaCheckbox({
      checked: true,
      fieldId: 13919
    }),

  ],
  [
    new MetaCheckbox({
      documentId: 14004,
      checked: false,
    }),
    new MetaLabel({
      fieldId: 13896
    }),
    new MetaCheckbox({
      checked: true,
      fieldId: 13899
    }),
    new MetaCheckbox({
      checked: true,
      fieldId: 13900
    }),
    new MetaLabel({
      fieldId: 13919
    })

  ],
]

以下是我尝试过的功能,但没有结果,该功能是在ArrayA中提供值yes或no,而在arrayB中我尝试了多种方法,尽管未找到任何解决方案

这是try错误解决方案:

const filteredFields = metaField[0].th.map((item) => {
  let result = metaField[0].tr.filter(
    (loc) => loc.fieldId == item.id
  );
  if (temp.length) {
    documentData.push(
      new MetaCheckbox({
        label: "yes",
        checked: false,
        localeCode: "abc",
      }),
      new MetaCheckbox({
        label: "yes",
        checked: true,
        labelPosition: "before",
      })
    );
  } else {
    documentData.push(
      new MetaLabel({
        label: "no",
      })
    );
  }
  return result = documentData
});


console.log(filteredFields);

请帮助我解决此问题

0 个答案:

没有答案