Javascript-基于id筛选器从数组中提取项以创建2个数组

Javascript-基于id筛选器从数组中提取项以创建2个数组,javascript,Javascript,我只是在寻找一个很好的方法: 我有两个阵列: var allItems = [ {'id' : '1', 'title' : 'Title 1' }, {'id' : '2', 'title' : 'Title 2' }, {'id' : '3', 'title' : 'Title 3' }, {'id' : '4', 'title' : 'Title 4' }, {'id'

我只是在寻找一个很好的方法:

我有两个阵列:

 var allItems = [
            {'id' : '1', 'title' : 'Title 1' },
            {'id' : '2', 'title' : 'Title 2' },
            {'id' : '3', 'title' : 'Title 3' },
            {'id' : '4', 'title' : 'Title 4' },
            {'id' : '5', 'title' : 'Title 5'},
            {'id' : '6', 'title' : 'Title 6' }
        ];

    var idsToExtract = ['1', '3', '6'];
我正在寻找两个数组的结果,如下所示:

    var array1 = [
            {'id' : '1', 'title' : 'Title 1' },
            {'id' : '3', 'title' : 'Title 3' },
            {'id' : '6', 'title' : 'Title 6'}
        ];

    var array2 = [
            {'id' : '2', 'title' : 'Title 2' },
            {'id' : '4', 'title' : 'Title 4' },
            {'id' : '5', 'title' : 'Title 5'}
        ];
我只使用原生JS(ES2015)数组方法(map/filter等)

没有jquery/下划线等


谢谢

Array.prototype.filter()可以帮助您:

var allItems = [
            {'id' : '1', 'title' : 'Title 1' },
            {'id' : '2', 'title' : 'Title 2' },
            {'id' : '3', 'title' : 'Title 3' },
            {'id' : '4', 'title' : 'Title 4' },
            {'id' : '5', 'title' : 'Title 5'},
            {'id' : '6', 'title' : 'Title 6' }
        ];

var idsToExtract = ['1', '3', '6'];

var array1 = allItems.filter(function(item) {
  return idsToExtract.indexOf(item.id) !== -1;
});

var array2 = allItems.filter(function(item) {
  return idsToExtract.indexOf(item.id) === -1;
});
当然,您可以使用
Array.prototype.foreach()
,并在一个迭代周期内创建两个数组:

var allItems = [
            {'id' : '1', 'title' : 'Title 1' },
            {'id' : '2', 'title' : 'Title 2' },
            {'id' : '3', 'title' : 'Title 3' },
            {'id' : '4', 'title' : 'Title 4' },
            {'id' : '5', 'title' : 'Title 5'},
            {'id' : '6', 'title' : 'Title 6' }
        ];

var idsToExtract = ['1', '3', '6'],
  array1 = [],
  array2 = [];

allItems.forEach(function(item) {
  idsToExtract.indexOf(item.id) !== -1 ? array1.push(item) : array2.push(item);
});

Array.prototype.filter()
可以帮助您:

var allItems = [
            {'id' : '1', 'title' : 'Title 1' },
            {'id' : '2', 'title' : 'Title 2' },
            {'id' : '3', 'title' : 'Title 3' },
            {'id' : '4', 'title' : 'Title 4' },
            {'id' : '5', 'title' : 'Title 5'},
            {'id' : '6', 'title' : 'Title 6' }
        ];

var idsToExtract = ['1', '3', '6'];

var array1 = allItems.filter(function(item) {
  return idsToExtract.indexOf(item.id) !== -1;
});

var array2 = allItems.filter(function(item) {
  return idsToExtract.indexOf(item.id) === -1;
});
当然,您可以使用
Array.prototype.foreach()
,并在一个迭代周期内创建两个数组:

var allItems = [
            {'id' : '1', 'title' : 'Title 1' },
            {'id' : '2', 'title' : 'Title 2' },
            {'id' : '3', 'title' : 'Title 3' },
            {'id' : '4', 'title' : 'Title 4' },
            {'id' : '5', 'title' : 'Title 5'},
            {'id' : '6', 'title' : 'Title 6' }
        ];

var idsToExtract = ['1', '3', '6'],
  array1 = [],
  array2 = [];

allItems.forEach(function(item) {
  idsToExtract.indexOf(item.id) !== -1 ? array1.push(item) : array2.push(item);
});
使用:

jsIDLE:

使用:

jsiddle:

使用简单for循环

var allItems = [
            {'id' : '1', 'title' : 'Title 1' },
            {'id' : '2', 'title' : 'Title 2' },
            {'id' : '3', 'title' : 'Title 3' },
            {'id' : '4', 'title' : 'Title 4' },
            {'id' : '5', 'title' : 'Title 5'},
            {'id' : '6', 'title' : 'Title 6' }
        ];

var idsToExtract = ['1', '3', '6'],

    var remainingItemsArray= [];
    var extractedItemsArray= [];
    for(var i=0;i<allItems.length;i++){
            var item = allItems[i];
            if(idsToExtract.indexOf(item.id) != -1){
                remainingItemsArray.push(item);
            }else{
                extractedItemsArray.push(item);
            }        
    }
var allItems=[
{'id':'1','title':'title 1'},
{'id':'2','title':'title 2'},
{'id':'3','title':'title 3'},
{'id':'4','title':'title 4'},
{'id':'5','title':'title 5'},
{'id':'6','title':'title 6'}
];
var idsToExtract=['1','3','6'],
var剩余工程量=[];
var extractedItemsArray=[];
for(var i=0;i使用简单for循环

var allItems = [
            {'id' : '1', 'title' : 'Title 1' },
            {'id' : '2', 'title' : 'Title 2' },
            {'id' : '3', 'title' : 'Title 3' },
            {'id' : '4', 'title' : 'Title 4' },
            {'id' : '5', 'title' : 'Title 5'},
            {'id' : '6', 'title' : 'Title 6' }
        ];

var idsToExtract = ['1', '3', '6'],

    var remainingItemsArray= [];
    var extractedItemsArray= [];
    for(var i=0;i<allItems.length;i++){
            var item = allItems[i];
            if(idsToExtract.indexOf(item.id) != -1){
                remainingItemsArray.push(item);
            }else{
                extractedItemsArray.push(item);
            }        
    }
var allItems=[
{'id':'1','title':'title 1'},
{'id':'2','title':'title 2'},
{'id':'3','title':'title 3'},
{'id':'4','title':'title 4'},
{'id':'5','title':'title 5'},
{'id':'6','title':'title 6'}
];
var idsToExtract=['1','3','6'],
var剩余工程量=[];
var extractedItemsArray=[];

对于(var i=0;i@29er是的,ES6真的让一行程序干净有趣!ES2015有。使用它…@29er是的,ES6真的让一行程序干净有趣!ES2015有。使用它。。。