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有。使用它。。。