javascript - 试图弄清楚为什么该功能不起作用
问题描述
我编写了一个过滤器函数,它应该过滤对象数组并且它确实过滤了它,但是结果变量没有得到过滤后的数组。
数组示例:
hotels: [{
photo: "/some_address/some_photo.png",
name: "Hotel Moscow Name",
address: "Moscow, some street, 1",
amenities: [{
name: 'wi-fi'
}, {
name: 'bar'
}, {
name: 'pool'
}, {
name: 'transfer'
},
{
name: 'bath'
}, {
name: 'breakfast'
}, {
name: 'spa'
}
],
price: 3000
},
{
photo: "/some_address/some_photo.png",
name: "Hotel St.Pitersberg Name",
address: "sSt.Pitersberg, some street, 2",
amenities: [{
name: 'wi-fi'
}, {
name: 'bar'
}, {
name: 'fitness'
}, {
name: 'transfer'
},
{
name: 'bath'
}, {
name: 'breakfast'
}, {
name: 'spa'
}
],
price: 4000
},
}]
changeFilterValue: function(choosenAmenity) {
this.changeFiltersList(choosenAmenity);
let settedList = this.settedFilters;
this.filteredData = this.hotels.filter(function(hotel) { //массив hotels
let amenityArray = [];
hotel.amenities.forEach(function(amenity) {
amenityArray.push(amenity.name);
})
return settedList.filter(function(elem) {
console.log(settedList, amenityArray);
console.log(amenityArray.includes(elem));
return amenityArray.includes(elem);
});
})
console.log(this.filteredData);
解决方案
settedList.filter(...)
返回一些数组,该数组始终为真。return settedList.filter(...).length
如果要检查数组是否不为空,请尝试
推荐阅读
- apollo - 阿波罗联盟验证另一个子图中的输入字段
- go - 在 go 中复制指针内容会导致不必要的开销?
- java - 提供的 javaHome 似乎无效。我找不到 java 可执行文件。尝试位置:C:\Program Files\Java\jdk-17\bin\java.exe
- python - ThreadPoolExecutor 是否保证将 N 个任务均匀分布在 N 个线程上?
- java - 处理 JPMS 模块和与 java 8 的兼容性的正确方法?
- java - Java 短日期字符串转换为 ZonedDateTime
- visual-studio-code - 即使没有安装,如何在 Visual Studio Code 中禁用 Rickroll?
- javascript - Vue.js:手风琴在 for 循环中不起作用
- blockchain - 如何解决“neo-express”不被识别为内部或外部命令,
- mysql - sqlserver 意外关闭