【发布时间】:2019-09-13 22:28:35
【问题描述】:
我有一些愚蠢的问题 - 我不明白我的错误在哪里
我有减速器,看起来:
import startsWith from "lodash";
const arr = [{id: "55ae8f78-4563-4445-b75f-267fe02c00a8", name: "Licensed Car", price: "775.00", discount: "68%"},
{id: "7d30c1c1-dd02-49cd-8b02-d8c3ec301d70", name: "Handmade Mouse", price: "349.00", discount: "71%"},
{id: "5f383f37-d9b1-4494-ac2f-d1ecb72a78f3", name: "Licensed Shirt", price: "425.00", discount: "69%"},
{id: "5ae0de55-f7e6-4d59-bebd-9b215d327efb", name: "Intelligent Chips", price: "767.00", discount: "62%"},
{id: "231a1dc1-1cf8-4b5e-bc3a-9b23932492e8", name: "Refined Cheese", price: "367.00", discount: "80%"}]
const INITIAL_STATE = {
time: undefined,
products: arr
};
export default (state = INITIAL_STATE, { type, payload }) => {
switch (type) {
case "FILTER_BY_VALUE": {
return {
...state,
products: [
...state.products.filter(product =>
startsWith(product.name.toLowerCase(), payload.toLowerCase())
)
]
};
}
default:
return state;
}
};
我也使用 lodash 方法“startsWith”
_.startsWith([string=''], [target], [position=0])
_.startsWith('abc', 'a');
// => true
_.startsWith('abc', 'b');
// => false
_.startsWith('abc', 'b', 1);
// => true
有了payload就可以了,我想过滤一个数组,只留下值名与payload相同或部分相同的元素。
如果有人知道不用 lodash 解决我的问题的另一种方法 - 请写下你的想法。
感谢您的回答!
【问题讨论】: