Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过内部数组中的元素过滤对象数组-函数式编程Javascript_Javascript_Arrays - Fatal编程技术网

如何通过内部数组中的元素过滤对象数组-函数式编程Javascript

如何通过内部数组中的元素过滤对象数组-函数式编程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:

仍在进行函数式编程:.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: 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。