我来了across以下的功能,并不完全确定它在做什么。
.filter(note => note)
具体是什么目的?
laneNotes: props.lane.notes.map(id => state.notes[
state.notes.findIndex(note => note.id === id)
]).filter(note => note)
filter
每个notes
执行notes
还是map
循环所有$variable = array("apple" , "orange");
DB::table('table1')->where('some_field', $condition)->update(['field1' => $variable[0], 'field2' => $variable[1]]);
后只执行一次?
答案 0 :(得分:3)
.filter(note => note)
会过滤所有falsy
个值。它相当于:.filter(Boolean)
Also does filter get executed for each notes
or only once after all notes are looped over by map?
来自docs:
filter()方法创建一个包含所有传递元素的新数组 由提供的函数实现的测试
console.log([0, 2, '', false, null, true, undefined].filter(item => item));
console.log([0, 2, '', false, null, true, undefined].filter(Boolean));

javascript中的所有falsy值:
null
false
0
''
/ ""
undefined
NaN
答案 1 :(得分:2)
检查note
是否真实 - 如果不是真的,则该元素不会包含在计算的laneNotes
中。
例如:
console.log(
[0, 1, 2].filter(num => num)
);

有问题的代码更简单,看起来像这样:
laneNotes: props.lane.notes.map((id) => {
const foundIndex = state.notes.findIndex(note => note.id === id);
return state.notes[foundIndex];
}).filter(note => note);
使用findIndex
查找匹配的note
- 如果找不到匹配的note
,则foundIndex
将为-1,因此state.notes[foundIndex]
将为未定义。 .filter
函数的目的是将undefined
s保留在结果之外。
答案 2 :(得分:1)
简单地 - .filter(n => n)
删除空(非真实)值并且是 - 它遍历映射中的每个项目(由.map
)数组返回
你一定要看到文档:mozilla.org -> filter:)