给出以下数组:
var arrayOfIds = ko.observableArray(["2", "3"]);
以下对象数组:
var arrayOfObjects = ko.observableArray([
{
"id": "1",
"title": "Test Folder",
},
{
"id": "2",
"title": "Test Folder",
},
{
"id": "3",
"title": "Test Folder",
},
{
"id": "4",
"title": "Test Folder",
},
])
如何才能有效地对id数组中指定的对象执行操作?
具体来说,我正在尝试:
arrayOfObjects.remove(<items 2 and 3 from the id array>).
我有什么:
arrayOfObjects.remove(function (item) {
return arrayOfIds().contains(item.id);
});
但是我不能在数组上使用“contains”...
我也试过这个:
innerModel.folders.remove(function (item) {
return $.inArray(item.id, selectedFolders()) > 0;
});
答案 0 :(得分:1)
传递一个接受数组项的回调函数,它会遍历项目并删除那些返回true
的项目。
arrayOfObjects.remove(function (item){
return item.id === '2' || item.id === '3';
});
或者使用jQuery inArray
函数来检查许多值:
arrayOfObjects.remove(function (item){
var itemsToRemove = ['2','1','4','7'];
return $.inArray(item.id, itemsToRemove) !== -1;
});
答案 1 :(得分:0)
我最终做了:
ko.utils.arrayForEach(arrayOfIds(), function (folderId) {
arrayOfObjects.remove(function (folder) {
if (folder.folderId() === folderId) {
return true;
}
return false;
});
});