如何通过内部数组中的元素过滤对象数组-函数式编程Javascript
仍在进行函数式编程:.forEach(),.map(),.filter(),.reduce() 我正在经历一个新的挑战如何通过内部数组中的元素过滤对象数组-函数式编程Javascript,javascript,arrays,Javascript,Arrays,仍在进行函数式编程:.forEach(),.map(),.filter(),.reduce() 我正在经历一个新的挑战 var bikes = [ {name: 'Cinelli Bolt', price: '2000', age: 1, singlespeed: 'yes', features: ['tubeless tires', 'disk brakes', 'carbon frame']}, {name: 'Cinelli Mash', price: '1700', age:
var bikes = [
{name: 'Cinelli Bolt', price: '2000', age: 1, singlespeed: 'yes', features: ['tubeless tires', 'disk brakes', 'carbon frame']},
{name: 'Cinelli Mash', price: '1700', age: 3, singlespeed: 'yes', features: ['gatorskin tyres', 'sram drivetrain', 'steel frame']},
{name: 'Specialized Langster', price: '1000', age: 1, singlespeed: 'no', features: ['two speed enclosed hub', 'bullbars', 'carbon frame']}
];
我试图通过一个特定的功能“碳框架”来过滤阵列。我曾考虑过使用过滤器,但对在key.value对中调用该特性感到困惑
var justCarbonBikes = bikes.filter(function(bike) {
return bike.features['carbon frame'];
});
预期结果应修改原始数组:
var bikes = [
{name: 'Cinelli Bolt', price: '2000', age: 1, singlespeed: 'yes', features: ['tubeless tires', 'disk brakes', 'carbon frame']},
{name: 'Specialized Langster', price: '1000', age: 1, singlespeed: 'no', features: ['two speed enclosed hub', 'bullbars', 'carbon frame']}
];
这是一个解决方案,您可以循环过滤函数内的功能,如果您找到碳素框架,则返回
var justCarbonBikes = bikes.filter(function(bike) {
for(let i of bike.features){
if(i == 'carbon frame'){
return bike
}
}
});
你就快到了。通过使用检查索引,可以将其用作返回值
return bike.features.indexOf('carbon frame') + 1;
var bikes=[{name:'Cinelli Bolt',price:'2000',age:1,singlespeed:'yes',特点:['tuberless轮胎','disk brake','carbon frame']},{name:'Cinelli Mash',price:'1700',age:3,singlespeed:'yes',特点:['gatorskin轮胎','sram传动系统','钢架']},{名称:'Specialized Langster',价格:'1000',年龄:1岁,singlespeed:'no',特点:['two speed enclosed hub','Bullbar','carbon frame']},
justCarbonBikes=bikes.filter(函数(bike)){
返回自行车。功能。indexOf(‘碳框架’)+1;
}),
无碳自行车=自行车。过滤器(功能(自行车){
返回自行车.features.indexOf('carbon frame')=-1;
});
console.log(justCarbonBikes);
控制台。日志(不含碳的自行车);
.as控制台包装{最大高度:100%!重要;顶部:0;}
Nice,我更喜欢将其过滤,因为您可以指定特定的条件:如果我想要所有非碳框架的自行车。我如何否定该功能:所有非碳框架的自行车都没有“碳框架”功能?您可以检查结果或否定它,如includes。