JavaScript의 객체 조작 배열

두 개체 배열의 차이점을 얻고 단일 개체에 병합하는 방법은 무엇입니까?




객체의 두 배열




const befor = [
  {
    one: "123",
    two: "124",
    three: "127",
  },
];

const after = [
  {
    one: "123",
    two: "125",
    three: "128",
  },
];



두 배열에서만 변경된 값을 얻습니다.




let newChanges = Object.keys(befor[0]).map(
  (item) => befor[0][item] !== after[0][item] && { [item]: after[0][item] }
);

console.log(newChanges)


산출:





여기서는 **부울 **값이 필요하지 않습니다.
그것에 대해 걱정하지 마십시오.
이에 대해서는 나중에 말씀드리겠습니다.

let result = Object.assign({}, ...newChanges);
console.log(result)


이제 출력:



{ two: '125', four: '130' }





WHF?



Object.assign( ) 객체를 생성합니다.
여기에는 키와 값이 필요합니다.

그러나 부울 값은 1의 값입니다.

따라서 Object.assign( )은 부울 값을 인식하지 못합니다.

하지만 이게 맞는 이유라고는 할 수 없네요 😅

다른 솔루션




newChanges = newChanges.filter(Boolean)
console.log(newChanges);


산출:


무슨 일이야?



필터 메서드는 함수에 전달될 때 false를 반환하는 모든 값을 필터링합니다.
필터를 사용하고 부울 생성자를 전달할 때.

read about it👀


전체 코드는 여기 👨‍💻:





const befor = [
  {
    one: "123",
    two: "124",
    three: "128",
    four: "132",
  },
];

const after = [
  {
    one: "123",
    two: "125",
    three: "128",
    four: "130",
  },
];

let newChanges = Object.keys(befor[0]).map(
  (item) => befor[0][item] !== after[0][item] && { [item]: after[0][item] }
);

newChanges = newChanges.filter(Boolean)
// console.log(newChanges);

let result = Object.assign({}, ...newChanges);
console.log(result);



결과 🎉:



{ two: '125', four: '130' }






결론 😊



이것을 당신과 공유하고 싶었습니다 😁

이를 수행하는 또 다른 좋은 방법을 찾으면 여기에서 공유하는 것을 잊지 마십시오.

좋은 웹페이지 즐겨찾기