我目前正在提取html表中输入的实时数据,并从每个列值中计算出某个值。为此,我需要使用_.chain()
和_.pluck
,并刮除null
和undefined
之类的值,我正在使用_.compact()
,如下所示:
var vals = _.chain(values).pluck(operand).compact().value();
但是这也会删除0
的值。相反,我想保留0
的值。它适用于0.1
等所有内容,但不适用于0。
For this array: 0: {A: 4} 1: {T: 6} 2: {A: 1} 3: {T: 6} when operand='A', vals=4,1 ==> size of vals[] = 2
但是
For this array: 0: {A: 4} 1: {T: 6} 2: {A: 0} 3: {T: 6} when operand='A', vals=4 ==> size of vals[] = 1 //missing value 0
有没有办法做到这一点?
谢谢。
答案 0 :(得分:3)
解决方案取决于operand
提取的内容。如果返回0
,则后续调用compact
会删除该值。您可以尝试以下方法:
_.chain(values).pluck(operand).filter(x => x != null).value()
x != null
部分删除了任何null
和/或undefined
值,但其余部分保持不变。
答案 1 :(得分:3)
这不是.pluck
的错,而是.compact
的错:
Docs:
紧凑
返回列表的副本,其中所有虚假值均已删除。在JavaScript中, false,null,0,“”,未定义和 NaN 都是虚假的。
您可以通过使用.filter(v => !!v || v === 0)
而不是.compact()
来避免这种情况。