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' }
결론 😊
이것을 당신과 공유하고 싶었습니다 😁
이를 수행하는 또 다른 좋은 방법을 찾으면 여기에서 공유하는 것을 잊지 마십시오.
Reference
이 문제에 관하여(JavaScript의 객체 조작 배열), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jacksonkasi/array-of-object-manipulation-in-javascript-6bd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)