有没有结合 _.map() 和 _.filter() 的 lodash 函数?
is there a lodash function that is a combination of _.map() and _.filter()?
我有一组 div 个元素:
<div class="myDiv" key="default">Default Val</div>
<div class="myDiv" key="default">Default Val2</div>
<div class="myDiv" key="myVal-1">Value 1</div>
<div class="myDiv" key="myVal-2">Value 2</div>
<div class="myDiv" key="myVal-3">Value 3</div>
并且我想将所有 'key' 属性(具有 'default' 值的属性除外)收集到一个数组中。
我知道我可以为此使用 _.each(),但是是否有一个结合了 _.map() 和 _.filter() 的 lodash 函数?换句话说,我需要这样的东西:
arr = _.func($('.myDiv'), (el) => {
// collects truthy values and ignores falsy ones
return $(el).attr('key') == 'default' ? $(el).attr('key') : false;
});
arr // => ["myVal-1", "myVal-2", "myVal-3"]
只需使用map
和 filter
:
arr = _.filter(
_.map(
$('.myDiv'),
el => $(el).attr('key')
),
key => key != 'default'
);
reduce
可以在循环中定义任何内容。但这并不一定意味着它更容易阅读。
arr = _.reduce($('.myDiv'), (result, el) => {
const key = $(el).attr('key');
if (key !== 'default') result.push(key);
return result;
}, []);
我有一组 div 个元素:
<div class="myDiv" key="default">Default Val</div>
<div class="myDiv" key="default">Default Val2</div>
<div class="myDiv" key="myVal-1">Value 1</div>
<div class="myDiv" key="myVal-2">Value 2</div>
<div class="myDiv" key="myVal-3">Value 3</div>
并且我想将所有 'key' 属性(具有 'default' 值的属性除外)收集到一个数组中。 我知道我可以为此使用 _.each(),但是是否有一个结合了 _.map() 和 _.filter() 的 lodash 函数?换句话说,我需要这样的东西:
arr = _.func($('.myDiv'), (el) => {
// collects truthy values and ignores falsy ones
return $(el).attr('key') == 'default' ? $(el).attr('key') : false;
});
arr // => ["myVal-1", "myVal-2", "myVal-3"]
只需使用map
和 filter
:
arr = _.filter(
_.map(
$('.myDiv'),
el => $(el).attr('key')
),
key => key != 'default'
);
reduce
可以在循环中定义任何内容。但这并不一定意味着它更容易阅读。
arr = _.reduce($('.myDiv'), (result, el) => {
const key = $(el).attr('key');
if (key !== 'default') result.push(key);
return result;
}, []);