Javascript ES6 / ES5 배열에서 찾기 및 변경
개체 배열이 있습니다. 일부 필드에서 찾은 다음 변경하고 싶습니다.
var item = {...}
var items = [{id:2}, {id:2}, {id:2}];
var foundItem = items.find(x => x.id == item.id);
foundItem = item;
원래 개체를 변경하고 싶습니다. 어떻게? (저도 lodash에 있을지 상관 없습니다)
findIndex 를 사용 하여 객체 배열에서 인덱스를 찾고 필요에 따라 바꿀 수 있습니다.
var item = {...}
var items = [{id:2}, {id:2}, {id:2}];
var foundIndex = items.findIndex(x => x.id == item.id);
items[foundIndex] = item;
이것은 고유 한 ID를 가정합니다. ID가 중복 된 경우 (예시와 같이) forEach를 사용하는 것이 더 좋습니다.
items.forEach((element, index) => {
if(element.id === item.id) {
items[index] = item;
}
});
내 최선의 접근 방식은 다음과 같습니다.
var item = {...}
var items = [{id:2}, {id:2}, {id:2}];
items[items.findIndex(el => el.id === item.id)] = item;
findIndex에 대한 참조
그리고 새 객체로 바꾸고 싶지 않고 대신 필드를 복사하려면 item
다음을 사용할 수 있습니다 Object.assign
.
Object.assign(items[items.findIndex(el => el.id === item.id)], item)
대안으로 .map()
:
Object.assign(items, items.map(el=> el.id === item.id? item : el))
다른 방법은 스플 라이스 를 사용하는 것 입니다.
이
splice()
메서드는 기존 요소를 제거하거나 교체하거나 새로운 요소 를 제자리에 추가하여 배열의 내용을 변경합니다 .
주의 : 리 액티브 프레임 워크로 작업하는 경우 "뷰"가 업데이트되고 어레이가 업데이트되었음을 "알고"있습니다.
대답 :
var item = {...}
var items = [{id:2}, {id:2}, {id:2}];
let foundIndex = items.findIndex(element => element.id === item.id)
items.splice(foundIndex, 1, item)
항목의 값만 변경하고 싶은 경우에는 찾기 기능을 사용할 수 있습니다.
// Retrieve item and assign ref to updatedItem
let updatedItem = items.find((element) => { return element.id === item.id })
// Modify object property
updatedItem.aProp = ds.aProp
Filter를 사용할 수 있습니다 .
const list = [{id:0}, {id:1}, {id:2}];
let listCopy = [...list];
let filteredDataSource = listCopy.filter((item) => {
if (item.id === 1) {
item.id = 12345;
}
return item;
});
console.log(filteredDataSource);
배열 [Object {id : 0}, Object {id : 12345}, Object {id : 2}]
참고 URL : https://stackoverflow.com/questions/35206125/javascript-es6-es5-find-in-array-and-change
'programing tip' 카테고리의 다른 글
android studio ctrl + space는 문서 창을 엽니 다. (0) | 2020.09.18 |
---|---|
C ++의 일반 포인터와 비교하여 스마트 포인터의 오버 헤드는 얼마입니까? (0) | 2020.09.18 |
CentOS 7.2에서 yum으로 gcc 5.3을 설치하는 방법은 무엇입니까? (0) | 2020.09.18 |
구조체가 인터페이스를 구현하는 것이 안전합니까? (0) | 2020.09.18 |
Linux 프로세스 상태 (0) | 2020.09.18 |