[英]NodeJs splicing object from array correctly but not deleting the correct object in the DB
[英]Object Splicing within Array not giving correct result
在我的應用程序中,我想在匹配時從數組中拼接對象,我正在使用lodash函數進行拼接,如下所示,不幸的是json無法正確拼接,
誰能給我一些關於這個問題的建議
var arr = [{
name: 'Jack',
id: 125
}, {
name: 'Jack',
id: 125
}];
var result = _.without(arr, _.findWhere(arr, {name: 'Jack'}));
console.log(JSON.stringify(result));
預期結果
[]
實際結果
[{"name":"Jack","id":125}]
更新1
即使使用普通的JavaScript方式也可以提供相同的輸出
for(var i = 0; i < arr.length; i++) {
var obj = arr[i];
if(obj.name === 'Jack') {
arr.splice(i, 1);
}
}
#1
var arr = [{
name: 'Jack',
id: 125
}, {
name: 'Jack',
id: 125
}];
var result = _.rest(arr, function (el) {
return el.name === 'Jack';
});
console.log(JSON.stringify(result)); // "[]"
#2
var arr = [{
name: 'Jack',
id: 125
}, {
name: 'Jack',
id: 125
}, {
name: 'foo',
id: 124
}];
var result = _.rest(arr, function (e) {
return e.name === 'Jack';
});
console.log(JSON.stringify(result)); // "[{\"name\":\"foo\",\"id\":124}]"
// 3 also you can use _.filter if you do not want slice of array...
var result = _.filter(arr, function (e) {
return e.name !== 'Jack';
});
console.log(JSON.stringify(result)); // "[{\"name\":\"foo\",\"id\":124}]"
_.findWhere僅返回第一個匹配的元素。 這樣您就可以使用_.difference和_.filter或_.rest來完成任務
_.difference(arr, _.filter(arr,function(d){ return d.name = 'Jack' }));
您可以使用以下代碼使用純JavaScript實現相同的功能。
for(var i = 0; i < arr.length; i++) {
var obj = arr[i];
if(obj.name === 'Jack') {
arr.splice(i, 1);
i--; // Splicing of elements will cause shifting of indices in the array
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.