>source

두 개의 객체 배열이 있습니다.

   const oldArr = [
      {
        assetDetail_ID: 1,
        asset_Condition: "",
        asset_Condition_ID: 0,
        supplier_ID: 5,
      },
      {
        assetDetail_ID: 2,
        asset_Condition: "Good",
        asset_Condition_ID: 3,
        supplier_ID: 10,
      },
    ];
    const newArr = [
      {
        assetDetail_ID: 1,
        supplier_ID: 40,
      },
      {
        assetDetail_ID: 2,
        supplier_ID: 30,
      },
    ];

나는 객체로 확인하여 공통 값을 찾으려고 노력하고 있습니다. key 그리고 그들이 같으면 키와 값 쌍을 새 배열로 가져 와서 최종 결과가


   expectedResult = [
      {
        assetDetail_ID: 1,
        supplier_ID: 5,
      },
      {
        assetDetail_ID: 2,
        supplier_ID: 10,
      },
    ];

나는 이것을 시도했지만 나는 가치를 얻고있다. [1, 5, 2, 10] 객체가 아니라 내가 여기서 뭘 잘못하고 있니?

const oldArr = [{
    assetDetail_ID: 1,
    asset_Condition: "",
    asset_Condition_ID: 0,
    supplier_ID: 5,
  },
  {
    assetDetail_ID: 2,
    asset_Condition: "Good",
    asset_Condition_ID: 3,
    supplier_ID: 10,
  },
];
const newArr = [{
    assetDetail_ID: 1,
    supplier_ID: 40,
  },
  {
    assetDetail_ID: 2,
    supplier_ID: 30,
  },
];
const arr = []
oldArr.forEach((one, x) => {
  for (let i in one) {
    for (let j in newArr[x])
      if (i === j) {
        arr.push(one[i]); // If I change to arr.push(one);, it adds the whole object 
      }
  }
});
console.log(arr)

  • 답변 # 1

    당신의 방식대로하고 싶다면

    const oldArr = [{
        assetDetail_ID: 1,
        asset_Condition: "",
        asset_Condition_ID: 0,
        supplier_ID: 5,
      },
      {
        assetDetail_ID: 2,
        asset_Condition: "Good",
        asset_Condition_ID: 3,
        supplier_ID: 10,
      },
    ];
    const newArr = [{
        assetDetail_ID: 1,
        supplier_ID: 40,
      },
      {
        assetDetail_ID: 2,
        supplier_ID: 30,
      },
    ];
    const arr = oldArr.map((one, index) => {
      const existingKeys = Object.keys(newArr[index]).filter(key => one.hasOwnProperty(key));
      let newObj = existingKeys.reduce((acc, curr) => {
          acc[curr] = one[curr];
          return acc;
      }, {});
      return newObj;
    });
    console.log(arr)
    
    

  • 답변 # 2

    두 어레이 모두에 대해 단일 루프 접근 방식을 취하고 모두 수집 할 수 있습니다. assetDetail_IDnewArr 개체에서 평면 배열을 가져옵니다. oldArr 새 객체 또는 빈 배열을 반환합니다.

    const
        oldArr = [{ assetDetail_ID: 1, asset_Condition: "", asset_Condition_ID: 0, supplier_ID: 5 }, { assetDetail_ID: 2, asset_Condition: "Good", asset_Condition_ID: 3, supplier_ID: 10 }],
        newArr = [{ assetDetail_ID: 1, supplier_ID: 40 }, { assetDetail_ID: 2, supplier_ID: 30 }],
        temp = Object.fromEntries(newArr.map(({ assetDetail_ID }) => [assetDetail_ID, true])),
        result = oldArr.flatMap(({ assetDetail_ID, supplier_ID }) => temp[assetDetail_ID]
            ? { assetDetail_ID, supplier_ID }
            : []
        );
    console.log(result);
    
    

    .as-console-wrapper { max-height: 100% !important; top: 0; }
    
    

  • 답변 # 3

    function doTheJob(oldArr, newArr){
    let result = new Set();
    for(let i = 0; i < oldArr.length; i++){
     for(let j = 0; j < newArr.length; j++){
         if(oldArr[i].assertDetail_ID === newArr[j].assertDetail_ID){
             result.add(newArr[j]);
         }
     }
    }
    return Array.from(result);
    }
    
    

    이것은 당신의 문제를 해결할 수 있습니다!

  • 답변 # 4

    필요한 것은 고전적인 JavaScript 배열 함수입니다. filter()

    여기에 예가 있습니다-

    //your array
    const oldArr = [
          {
            assetDetail_ID: 1,
            asset_Condition: "",
            asset_Condition_ID: 0,
            supplier_ID: 5,
          },
          {
            assetDetail_ID: 2,
            asset_Condition: "Good",
            asset_Condition_ID: 3,
            supplier_ID: 10,
          },
        ];
    
    

    함수 -

    function getArr(id){
        const newArr = oldArr.filter(obj => { return obj.assetDetail_ID === id})
        console.log(newArr);  //let id = 1; this will give you a sub-array where assetDetail_ID = 1
        return newArr;
    }
    
    

관련 자료

  • 이전 Python pip라는 모듈 없음
  • 다음 r - 시간, T = 18 및 국가, n = 48 인 패널 데이터 세트에서 X_ (i, t) 변수를 비하하여 Y_ (i, t)와 같이 새 변수를 생성하는 함수가 필요합니다