객체 속성을 병합하지 않고 새 배열을 만들기 위해 객체 배열을 푸시하는 방법은 무엇입니까?

조엘 구스타브 손

루프 출력을 하나의 배열에 저장하려고합니다. console.log (arr2) 원하는 결과를 얻었지만 둘 이상의 배열이 있습니다. 나는 모든 것을 하나의 배열로 원합니다. .push를 사용하려고 할 때 모든 배열이 동일한 값을 생성합니다.

다른 방법으로 할 수는 있지만 방법은 모르겠습니다.

    let b = {};
    let arr3 = [];
    let arr1 = [{value1: 123, value2: 34, value3: 90, value4: 23, value5: 32},{value1: 10, value2: 09, value3: 54, value4: 32, value5: 311}];
    for (let a = 0; a <=4; a++){
       b = {"value1": a*a, "value3": a+12, "value4": a/2};
       arr2 = arr1.map(function(record){
       record.value1 = b.value1;
       record.value3 = b.value3;
       record.value4 = b.value4;
       return record;
       })
       // console.log(arr2);
       arr3.push(arr2);

}
console.log(arr3);

이것은 내가 .push로 달성 한 것이며 이것은 내가 원하는 것이 아닙니다.

  [
  { value1: 0, value2: 34, value3: 12, value4: 0, value5: 32 },
  { value1: 0, value2: 9, value3: 12, value4: 0, value5: 311 }
]
[
  { value1: 1, value2: 34, value3: 13, value4: 0.5, value5: 32 },
  { value1: 1, value2: 9, value3: 13, value4: 0.5, value5: 311 }
]
[
  { value1: 4, value2: 34, value3: 14, value4: 1, value5: 32 },
  { value1: 4, value2: 9, value3: 14, value4: 1, value5: 311 }
]
[
  { value1: 9, value2: 34, value3: 15, value4: 1.5, value5: 32 },
  { value1: 9, value2: 9, value3: 15, value4: 1.5, value5: 311 }
]
[
  { value1: 16, value2: 34, value3: 16, value4: 2, value5: 32 },
  { value1: 16, value2: 9, value3: 16, value4: 2, value5: 311 }
]

for 루프 내부에서 console.log (arr2)를 사용하면 원하는 결과를 얻을 수 있지만 단일 배열이 아닙니다.

   [
  { value1: 0, value2: 34, value3: 12, value4: 0, value5: 32 },
  { value1: 0, value2: 9, value3: 12, value4: 0, value5: 311 }
]
[
  { value1: 1, value2: 34, value3: 13, value4: 0.5, value5: 32 },
  { value1: 1, value2: 9, value3: 13, value4: 0.5, value5: 311 }
]
[
  { value1: 4, value2: 34, value3: 14, value4: 1, value5: 32 },
  { value1: 4, value2: 9, value3: 14, value4: 1, value5: 311 }
]
[
  { value1: 9, value2: 34, value3: 15, value4: 1.5, value5: 32 },
  { value1: 9, value2: 9, value3: 15, value4: 1.5, value5: 311 }
]
[
  { value1: 16, value2: 34, value3: 16, value4: 2, value5: 32 },
  { value1: 16, value2: 9, value3: 16, value4: 2, value5: 311 }
]

예상 결과:

[
  { value1: 0, value2: 34, value3: 12, value4: 0, value5: 32 },
  { value1: 0, value2: 9, value3: 12, value4: 0, value5: 311 },
  { value1: 1, value2: 34, value3: 13, value4: 0.5, value5: 32 },
  { value1: 1, value2: 9, value3: 13, value4: 0.5, value5: 311 },
  { value1: 4, value2: 34, value3: 14, value4: 1, value5: 32 },
  { value1: 4, value2: 9, value3: 14, value4: 1, value5: 311 },
  { value1: 9, value2: 34, value3: 15, value4: 1.5, value5: 32 },
  { value1: 9, value2: 9, value3: 15, value4: 1.5, value5: 311 },
  { value1: 16, value2: 34, value3: 16, value4: 2, value5: 32 },
  { value1: 16, value2: 9, value3: 16, value4: 2, value5: 311 }
]
Ibra

객체가 참조로 작동하기 때문입니다. 작동합니다. 다음을 교체하십시오.

 arr2 = arr1.map(function(record){
   record.value1 = b.value1;
   record.value3 = b.value3;
   record.value4 = b.value4;
   return record;
   })

코드에서 이것으로 :

 arr2 = arr1.map(function(record) {
const tempRecord = {...record}
tempRecord.value1 = b.value1;
tempRecord.value3 = b.value3;
tempRecord.value4 = b.value4;
return tempRecord;
})

다음을 수행하여 최종 결과를 얻을 수 있습니다. arr3.flat ();

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관