因此,我将过滤后的id放在一个数组中,并将所有数据放在另一个对象数组中。我想显示值数组中提到的过滤的id值。
var allData = [
{
id:'10',
name:'jhon'
},
{
id:'11',
name:'lewis'
},
{
id:'12',
name:'taylor'
},
{
id:'13',
name:'adam'
},
{
id:'14',
name:'bolive'
}
];
var addedIds = ['10', '12', '14'];
我的javascript代码,
allData.filter(data, function (item) {
item.map(function(list, i) {
if (list.id.indexOf(addedIds[i]) === -1) {
return;
}
console.log(list);
});
});
答案 0 :(得分:7)
这个怎么样?
Array.prototype.filter
只需要一个参数:一个传递给数组中每个项目的函数,并返回true或false,具体取决于该项是否应该包含在过滤器中。
您可以使用Array.prototype.indexOf
查看字符串是否在数组中。
var allData = [{
id: '10',
name: 'jhon'
}, {
id: '11',
name: 'lewis'
}, {
id: '12',
name: 'taylor'
}, {
id: '13',
name: 'adam'
}, {
id: '14',
name: 'bolive'
}];
var addedIds = ['10', '12', '14'];
var filteredData = allData.filter(function(item) {
return addedIds.indexOf(item.id) != -1;
});
console.log(filteredData);

答案 1 :(得分:4)
var string = '1111-2010-10-11';
var a = string.split('-').map(Number);
var date = new Date(a[1], a[2] - 1, a[3]);
var dateString = ((date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear());
console.log(a[0]+ '-' + dateString);
答案 2 :(得分:1)
var allData = [{
id: '10',
name: 'jhon'
}, {
id: '11',
name: 'lewis'
}, {
id: '12',
name: 'taylor'
}, {
id: '13',
name: 'adam'
}, {
id: '14',
name: 'bolive'
}];
var addedIds = ['10', '12', '14'];
var addedIdsSet = new Set(addedIds);
var result = allData.filter(e => addedIdsSet.has(e.id));
console.log(result)

我个人喜欢将Ids数组转换为Set,然后从那里移动:
var addedIdsSet = new Set(addedIds);
然后剩下的就是使用集合过滤(就像你尝试过的那样):
console.log(allData.filter(x => addedIdsSet.has(x.id)))
注意:如果你有一个很大的ID列表并想要挤出一些性能,那么使用Set只是必需,因为这会降低O(n ^ 2)到O的复杂度( n),其中 n 是allData中元素的数量。 无论如何,我还是喜欢使用Set,因为代码最终也看起来更干净了!
答案 3 :(得分:1)
var allData = [
{
id:'10',
name:'jhon'
},
{
id:'11',
name:'lewis'
},
{
id:'12',
name:'taylor'
},
{
id:'13',
name:'adam'
},
{
id:'14',
name:'bolive'
}
];
var addedIds = ['10', '12', '14'];
var filteredValues = allData.filter(x => addedIds.indexOf(x.id) !== -1);
console.log(filteredValues);
答案 4 :(得分:0)
你可以这样做:
var allData = [
{
id:'10',
name:'jhon'
},
{
id:'11',
name:'lewis'
},
{
id:'12',
name:'taylor'
},
{
id:'13',
name:'adam'
},
{
id:'14',
name:'bolive'
}
];
var addedIds = ['10', '12', '14'];
var filtered_results = [];
allData.filter(function (item) {
for(var k in addedIds){
if(item.id === addedIds[k]){
filtered_results.push(item);
}
}
});
console.log(filtered_results);