使用 javascript 过滤方法从列表中获取所有项目
Get all items from a list using javascript filter method
我想从列表中过滤项目。当某个类别将作为值提供给目标变量时,过滤方法应该 return 只有具有该类别的项目。但是当没有提供类别时,我想获得所有类别的项目,而不考虑类别。在我的下面的代码中工作正常,但我想要更清晰的逻辑来在没有提供类别作为目标时过滤项目。
let items = [
{'name':"A",'category':"a"},
{'name':"B",'category':"b"},
{'name':"C",'category':"c"}
]
let target;
console.log(items.filter( item => {
if(target==undefined){
return true;
}
return (item['category']===target);
}));
您可以创建一个接受项目列表和可选 target
的函数。如果目标被传递 return 过滤列表,否则 return 列表本身:
const filterByCategoryIfTargetProvided = (arr = [], target) =>
target ? arr.filter(({ category }) => category === target) : arr;
const items = [ {'name':"A",'category':"a"}, {'name':"B",'category':"b"}, {'name':"C",'category':"c"} ];
console.log( filterByCategoryIfTargetProvided(items) );
console.log( filterByCategoryIfTargetProvided(items, 'a') );
您可以不按类别过滤,也可以按类别过滤。
const
filter = (data, category) => data.filter(o => !category || o.category === category),
items = [{ name: "A", category: "a" }, { name: "B", category: "b" }, { name: "C", category: "c" }];
console.log(filter(items));
console.log(filter(items, 'a'));
.as-console-wrapper { max-height: 100% !important; top: 0; }
此函数需要一个数组和您要过滤的对象。您可以使用它根据类别、名称或任何其他对象键来过滤对象。谢谢
let items = [
{ name: "A", category: "a" },
{ name: "B", category: "b" },
{ name: "C", category: "c" },
];
const filterItems = (arr, itemToFilter) => {
if (itemToFilter) {
const keyToFilter = Object.keys(itemToFilter);
const filteredItem = arr.filter((eachItem) => {
return eachItem[keyToFilter] === itemToFilter[keyToFilter];
});
return filteredItem;
} else {
return arr;
}
};
console.log(filterItems(items, { category: "a" }));
我想从列表中过滤项目。当某个类别将作为值提供给目标变量时,过滤方法应该 return 只有具有该类别的项目。但是当没有提供类别时,我想获得所有类别的项目,而不考虑类别。在我的下面的代码中工作正常,但我想要更清晰的逻辑来在没有提供类别作为目标时过滤项目。
let items = [
{'name':"A",'category':"a"},
{'name':"B",'category':"b"},
{'name':"C",'category':"c"}
]
let target;
console.log(items.filter( item => {
if(target==undefined){
return true;
}
return (item['category']===target);
}));
您可以创建一个接受项目列表和可选 target
的函数。如果目标被传递 return 过滤列表,否则 return 列表本身:
const filterByCategoryIfTargetProvided = (arr = [], target) =>
target ? arr.filter(({ category }) => category === target) : arr;
const items = [ {'name':"A",'category':"a"}, {'name':"B",'category':"b"}, {'name':"C",'category':"c"} ];
console.log( filterByCategoryIfTargetProvided(items) );
console.log( filterByCategoryIfTargetProvided(items, 'a') );
您可以不按类别过滤,也可以按类别过滤。
const
filter = (data, category) => data.filter(o => !category || o.category === category),
items = [{ name: "A", category: "a" }, { name: "B", category: "b" }, { name: "C", category: "c" }];
console.log(filter(items));
console.log(filter(items, 'a'));
.as-console-wrapper { max-height: 100% !important; top: 0; }
此函数需要一个数组和您要过滤的对象。您可以使用它根据类别、名称或任何其他对象键来过滤对象。谢谢
let items = [
{ name: "A", category: "a" },
{ name: "B", category: "b" },
{ name: "C", category: "c" },
];
const filterItems = (arr, itemToFilter) => {
if (itemToFilter) {
const keyToFilter = Object.keys(itemToFilter);
const filteredItem = arr.filter((eachItem) => {
return eachItem[keyToFilter] === itemToFilter[keyToFilter];
});
return filteredItem;
} else {
return arr;
}
};
console.log(filterItems(items, { category: "a" }));