Elk*_*kin 6 javascript typescript angular
这是我的演示代码:
//Imports and decorators up here for Angular 2
export class ProductsListComponent {
products = [
{ name: "A", color: "Blue", size: 50 },
{ name: "B", color: "Blue", size: 60 },
{ name: "C", color: "Black", size: 70 }
];
filters = {
colors: ["Blue", "Black"],
sizes: [70, 50]
};
//This is my first approach but just works for the colors array inside filters object
//and i have no ideia how to filter sizes too
filterProducts() {
let results = [];
this.filters.colors.forEach((color) => {
this.products.filter((product) => {
if (product.color === color) {
results.push(product);
}
return true; //filter callback requires a boolean
})
});
console.log(results);
}
}
Run Code Online (Sandbox Code Playgroud)
我希望results数组看起来像这样filters:
var results = [
{ "name": "A", "color": "Blue", "size": 50 },
{ "name": "C", "color": "Black", "size": 70 }
];
Run Code Online (Sandbox Code Playgroud)
我希望能很好地解释我的问题.
这是使用 every 和 some 数组方法的示例:
var products=[
{"name":"A","color":"Blue","size":50},
{"name":"B","color":"Blue","size":60},
{"name":"C","color":"Black","size":70}
];
var filters={
color:["Blue","Black"],
size:[70,50]
};
var r = products.filter(x =>
Object.keys(filters).every(f =>
filters[f].some( z => z == x[f] )))
console.log(r)Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1586 次 |
| 最近记录: |