Javascript: 如何让 _.compact 忽略 0 作为虚假值?
Javascript: How to make _.compact ignore 0 as a falsy value?
我目前正在提取在 html table 中输入的实时数据,并从每列值中计算出某个值。为此,我需要使用 _.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
有办法吗?
提前致谢。
解决方案取决于 operand
提取的内容。如果它 returns 0
,则该值将在随后对 compact
的调用中删除。你可以试试这个:
_.chain(values).pluck(operand).filter(x => x != null).value()
x != null
部分删除任何 null
and/or undefined
值,但其余部分保持不变。
这不是 .pluck
的错,而是 .compact
的错:
Docs:
compact
Returns a copy of the list with all falsy values removed. In JavaScript, false, null, 0, "", undefined and NaN are all falsy.
您可以使用 .filter(v => !!v || v === 0)
而不是 .compact()
来避免这种情况。
我目前正在提取在 html table 中输入的实时数据,并从每列值中计算出某个值。为此,我需要使用 _.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
有办法吗?
提前致谢。
解决方案取决于 operand
提取的内容。如果它 returns 0
,则该值将在随后对 compact
的调用中删除。你可以试试这个:
_.chain(values).pluck(operand).filter(x => x != null).value()
x != null
部分删除任何 null
and/or undefined
值,但其余部分保持不变。
这不是 .pluck
的错,而是 .compact
的错:
Docs:
compact
Returns a copy of the list with all falsy values removed. In JavaScript, false, null, 0, "", undefined and NaN are all falsy.
您可以使用 .filter(v => !!v || v === 0)
而不是 .compact()
来避免这种情况。