Giả sử tôi có mảng đối tượng sau, đặt tên cho nó là itemArray;Đối tượng cập nhật góc trong mảng đối tượng
{
"totalItems": 2,
"items": [
{
"id": 1,
"name": "foo"
},
{
"id": 2,
"name": "bar"
},
]
}
Và tôi có đăng ký trả về kết quả cập nhật chỉ có id 2. Làm cách nào để cập nhật mảng đối tượng mà không lặp qua toàn bộ mảng?
Điều tôi muốn là một ví dụ như ví dụ bên dưới;
updateUser(user){
this.myservice.getUpdate(user.id)
.subscribe(newitem => {
this.updateArray(newitem);
});
}
updateArray(newitem){
this.itemArray.items[newitem.id].name = newitem.name
}
hoặc thậm chí tốt hơn, thay thế toàn bộ đối tượng;
updateArray(newitem){
this.itemArray.items[newitem.id] = newitem
}
Ví dụ này tuy nhiên cập nhật mảng dựa trên chỉ mục của mảng. Vì vậy, làm thế nào để tôi thay vì cập nhật dựa trên newitem.id?
Mẫu yêu cầu trong bình luận:
<tr *ngFor="let u of itemsArray.items; let i = index">
<td>{{ u.id }}</td>
<td>{{ u.name }}</td>
<td>
<input type="checkbox" checked="u.accepted" [(ngModel)]="itemsArray.items[i].accepted" (ngModelChange)="updateUser(u)">
<label for="singleCheckbox-{{i}}"></label>
</td>
</tr>
Bạn đang sử dụng đối tượng này để hiển thị các kết quả từ một vòng lặp trên itemArray này (bằng id của 2)? Những gì tôi nhận được tại, là bạn có thể chỉ cần viết một đường ống tùy chỉnh cho bộ lọc này? – JSess
* "Ví dụ này tuy nhiên cập nhật mảng dựa trên chỉ mục của mảng. Vì vậy, làm thế nào để tôi thay vì cập nhật dựa trên newitem.id?"*. Tại sao bạn không muốn cập nhật một mục từ một chỉ mục? Nó chắc chắn sẽ nhanh hơn vòng lặp mảng tìm kiếm một id cụ thể ... – developer033
cập nhật từ chỉ mục sẽ ổn. Làm cách nào tôi có thể tìm thấy chỉ mục phù hợp? Bây giờ chỉ mục không tương ứng với newitem.id – phicon