[英]How to remove an object from an array based on another array with Lodash?
我正在嘗試編輯基於另一個數組的對象數組。
例如,這是我的對象數組:
var objs = [{
attending: 0, user: '123'
}, {
attending: 0, user: '456'
}, {
attending: 0, user: '789'
}];
這是我的數組:
var arr = ['945', '456']
由於456
存在於arr
,我想從obj
刪除該對象。 因此是最終結果:
var objs = [{
attending: 0, user: '123'
}, {
attending: 0, user: '789'
}];
我已經嘗試了omit
和pullByAll
但沒有運氣:
var newObj = _.omit(obj, arr);
var newObj = _.pullAllBy(obj, arr, 'user');
使用Lodash
最好的方法是什么? 我知道為此創建一個 Javascript 函數會非常簡單,盡管我的應用程序需要經常執行此操作,因此擁有一個可訪問的簡單 Lodash 函數會很好。
您可以使用本機 js 方法來做到這一點。
var newObj = objs.filter(function(obj) {
return arr.indexOf(obj.user) != -1
});
如果您使用的是 ES6,那就更簡單了
var newObj = objs.filter(obj => arr.indexOf(obj.user) != -1);
有這個視頻很好地解釋了這個概念。
正如所問,這是在 lodash 中:
var newObj = _.filter(objs, function(obj) {
return _.indexOf(arr, obj.user) !== -1;
});
我們可以爭論純 js 與 lodash 直到奶牛回家,但 1) 問題要求使用 lodash,2) 如果 objs 或 arr 為空,純 js 答案將拋出錯誤。
使用普通的 JS 這將起作用:
var newObj = objs.filter(function(obj) {
return arr.indexOf(obj.user) !== -1
})
我能夠通過結合forEach()
和remove()
來解決這個問題
_(obj).forEach(function(value) {
_.remove(arr, {
user: value
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.