Vì vậy, tôi có một mảng của các đối tượng như thế:Update nếu tồn tại hoặc thêm yếu tố mới để mảng các đối tượng - cách thanh lịch trong javascript + lodash
var arr = [
{uid: 1, name: "bla", description: "cucu"},
{uid: 2, name: "smth else", description: "cucarecu"},
]
uid
là id duy nhất của đối tượng trong mảng này. Tôi đang tìm kiếm một cách thanh lịch để sửa đổi đối tượng nếu chúng ta có đối tượng với uid,
nhất định hoặc thêm một phần tử mới, nếu được hiển thị uid
không tồn tại trong mảng. Tôi tưởng tượng các chức năng để được cư xử như thế trong giao diện điều khiển js:
> addOrReplace(arr, {uid: 1, name: 'changed name', description: "changed description"})
> arr
[
{uid: 1, name: "bla", description: "cucu"},
{uid: 2, name: "smth else", description: "cucarecu"},
]
> addOrReplace(arr, {uid: 3, name: 'new element name name', description: "cocoroco"})
> arr
[
{uid: 1, name: "bla", description: "cucu"},
{uid: 2, name: "smth else", description: "cucarecu"},
{uid: 3, name: 'new element name name', description: "cocoroco"}
]
cách hiện tại của tôi dường như không phải rất thanh lịch và chức năng:
function addOrReplace (arr, object) {
var index = _.findIndex(arr, {'uid' : object.uid});
if (-1 === index) {
arr.push(object);
} else {
arr[index] = object;
}
}
Tôi đang sử dụng lodash, vì vậy tôi đã suy nghĩ về một cái gì đó như sửa đổi _.union
với kiểm tra bình đẳng tùy chỉnh.
vâng, tôi thích cấu trúc này quá, nhưng một số thư viện tôi sử dụng không ủng hộ điều này. Giống như [Angular typeahead] (https://github.com/angular-ui/bootstrap/tree/master/src/typeahead), nó chỉ có thể đi qua các mảng. – ganqqwerty
Bạn chỉ có thể sử dụng cấu trúc này làm chỉ mục. Bằng cách này bạn đã có tra cứu nhanh và một mảng bổ sung cho những thứ như một mảng là cần thiết. – friedi