javascript - remove - lodash是什麼




Javascript ES6/ES5在數組中查找並更改 (3)

另一種方法是使用 splice

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)

如果您只想更改項目的值,可以使用 find 函數:

// Retrieve item and assign ref to updatedItem
let updatedItem = items.find((element) => { return element.id === item.id })

// Modify object property
updatedItem.aProp = ds.aProp

我有一個對像數組。 我想通過某個字段找到,然後改變它:

var item = {...}
var items = [{id:2}, {id:2}, {id:2}];

var foundItem = items.find(x => x.id == item.id);
foundItem = item;

我希望它能改變原始對象。 怎麼樣? (我不在乎它是否也會在lodash)


可以使用 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);

Array [Object {id:0},Object {id:12345},Object {id:2}]


我最好的方法是:

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))





lodash