_.pluck 找不到对象时给出一个未定义值的数组
_.pluck gives an array of undefined values when it does not find the object
我正在使用 lodash 中的 _.pluck() 从数组中获取键的值。
var employees = [
{
Name : "abc"
},
{
Name : "xyz"
}
]
var res = _.pluck(employees, 'Name');
变量 res 将包含 ['abc,'xyz']
当我搜索其他字段字段时
var res = _.pluck(employees, 'SomeRandomField');
结果 - [未定义,未定义]
如何得到上面的结果就像 null of undefined 而不是数组
未定义值
我看起来你实际上是在寻找 .some
函数:
var res = _.pluck(employees, "Name");
res = res.some(function (d) { return d }) ? // are any of the elements truth-y?
// if so, map the false-y items to null
res.map(function (item) { return item || null; }) :
// otherwise (no truth-y items) make res `null`
null;
我查看了 .pluck
的 lodash 文档,但我认为这是不可能的。
_.pluck(collection, key)
Arguments
collection (Array|Object|string): The collection to iterate over.
key (string): The key of the property to pluck.
你可以做的是 .pluck
然后使用 JavaScript 的内置函数(或 lodash 的).map
:
var res = _.pluck(employees, 'Name').map(function (d) {
return d ? d : null;
});
这是相当低效的。您还不如编写自己的函数,该函数只遍历数组一次:
_.nullPluck = function (arr, key) {
return arr.map(function (d) {
return d && d[key] ? d[key] : null;
})
}
您可以使用 filter
和 pluck
:
var res = _.filter(_.pluck(employees, 'Name'), function(item) {
return item;
});
您可以使用 compact() to remove falsey values from the plucked array. You can use thru() 来改变包装器的输出。在这种情况下,如果所有采摘值都是 undefined
.
,我们需要 null
var collection = [ {}, {}, {} ];
_(collection)
.pluck('foo')
.compact()
.thru(function(coll) { return _.isEmpty(coll) ? null : coll; })
.value();
// → null
我正在使用 lodash 中的 _.pluck() 从数组中获取键的值。
var employees = [
{
Name : "abc"
},
{
Name : "xyz"
}
]
var res = _.pluck(employees, 'Name');
变量 res 将包含 ['abc,'xyz']
当我搜索其他字段字段时
var res = _.pluck(employees, 'SomeRandomField');
结果 - [未定义,未定义]
如何得到上面的结果就像 null of undefined 而不是数组 未定义值
我看起来你实际上是在寻找 .some
函数:
var res = _.pluck(employees, "Name");
res = res.some(function (d) { return d }) ? // are any of the elements truth-y?
// if so, map the false-y items to null
res.map(function (item) { return item || null; }) :
// otherwise (no truth-y items) make res `null`
null;
我查看了 .pluck
的 lodash 文档,但我认为这是不可能的。
_.pluck(collection, key)
Arguments collection (Array|Object|string): The collection to iterate over.
key (string): The key of the property to pluck.
你可以做的是 .pluck
然后使用 JavaScript 的内置函数(或 lodash 的).map
:
var res = _.pluck(employees, 'Name').map(function (d) {
return d ? d : null;
});
这是相当低效的。您还不如编写自己的函数,该函数只遍历数组一次:
_.nullPluck = function (arr, key) {
return arr.map(function (d) {
return d && d[key] ? d[key] : null;
})
}
您可以使用 filter
和 pluck
:
var res = _.filter(_.pluck(employees, 'Name'), function(item) {
return item;
});
您可以使用 compact() to remove falsey values from the plucked array. You can use thru() 来改变包装器的输出。在这种情况下,如果所有采摘值都是 undefined
.
null
var collection = [ {}, {}, {} ];
_(collection)
.pluck('foo')
.compact()
.thru(function(coll) { return _.isEmpty(coll) ? null : coll; })
.value();
// → null