Javascript 如何正确构造减速机时,试图做过滤器?
看着 我有一个对象数组,每个对象看起来像这样:Javascript 如何正确构造减速机时,试图做过滤器?,javascript,arrays,redux,lodash,Javascript,Arrays,Redux,Lodash,看着 我有一个对象数组,每个对象看起来像这样: { id: 10005, title: 'Brooklyn Bridge by Night', author: 'Charles Gooding', takenOn: 'some date', description: 'Photo of the Brooklyn Bridge at night. Taken from somewhere I am just making this up to be honest.', c
{
id: 10005,
title: 'Brooklyn Bridge by Night',
author: 'Charles Gooding',
takenOn: 'some date',
description: 'Photo of the Brooklyn Bridge at night. Taken from somewhere I am just making this up to be honest.',
cameraId: 301,
// some other stuff
}
我正在尝试做一个快速筛选,这是我的筛选结果的缩减器
。如何避免使用已构建的阵列
case 'FILTER_RESULTS':
const results = [];
state.photos.map((a) => {
Object.keys(a).forEach((b) => {
if (a[b].toLowerCase().includes(action.value.toLowerCase())) {
results.push(a); // also a question on this one
}
});
return results;
});
return {
...state,
state.photosFilter: results
}
此外,我如何确保我推入结果的对象是唯一的?感谢制作小而窄的函数;它们易于理解和组合
function includesAttributes(thing, target) {
return _.some(Object.keys(thing),
(key) => thing[key].toLowerCase().includes(target.toLowerCase()));
}
然后
您的第一个代码忽略了
.map()
的返回值。现在,一行中有两个返回值,没有右括号。在某个时候,你需要发布一些代码,这些代码实际上代表了你正在做的任何事情。这里还有一些未知因素,包括最终结果应该是什么。@眯着眼睛对我更新的混乱表示抱歉最终结果是包含一些要过滤的文本的对象数组。谢谢。太棒了!
case 'FILTER_RESULTS':
return state.photos.filter((record) => includesAttribute(record, action.value));