我刚开始使用lodash并拥有这个对象数组,其中一个属性有一个整数或为null。我知道如何过滤数组中的null项,但我如何检查它是否为空?
让我说我有这样的事情:
var users = [
{ 'user': 'barney', 'default': 1 },
{ 'user': 'dino', 'default': 0 },
{ 'user': 'wilma', 'default': 1 },
{ 'user': 'fred', 'default': null }
];
然后我想要类似的东西:
var notNullDefault = _.filter(sourceData, ['is_default', ! null ]); // objects with names barney, dino, wilma
var nullDefault = _.filter(sourceData, ['is_default', null ]); // object with name fred
同样,我是lodash的新手,所以也许有更好的方法来实现这一目标。
提前致谢。
答案 0 :(得分:26)
var notNullDefault = _.reject(sourceData, ['default', null]);
var nullDefault = _.filter(sourceData, ['default', null]);
的 DEMO 强>
答案 1 :(得分:2)
您可以创建一些谓词函数来检查默认值而不是默认用户:
var isDefaultUser = function(user){
return _.isNull(user.default);
}
var isNotdefaultUser = _.negate(isDefaultUser);
然后可以将它们用于过滤等。
var defaultUser = _.filter(users, isDefaultUser);
var notDefaultUsers = _.filter(users, isNotdefaultUser);
// partition will be an array; first element contains the default users
// second element contains the non default users
var parition = _.partition(users, isDefaultUser);
答案 2 :(得分:1)
let items = [1, 2, 4, null];
let isHaveNull = _.some(items, (item) => _.isNull(item));
console.log(isHaveNull);

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
&#13;
答案 3 :(得分:0)
尝试这样的事情:
var notNullDefault = _.filter(users, function(elem) { return elem.default !== null; });
var nullDefault = _.filter(users, function(elem) { return o.default === null; }); // object with name fred
返回的数组仅包含回调函数返回true
的元素。
或者,正如他们将它放在the fine manual中:迭代集合的元素,返回所有元素的数组谓词返回truthy for。使用三个参数调用谓词:(value,index | key,collection)。
答案 4 :(得分:0)
我相信这些图书馆有时候只是浪费时间。不是学习依赖于库的特定抽象,而是最好能够很好地保持ES6数组函数和箭头。所以,你走了;
var users = [
{ 'user': 'barney', 'default': 1 },
{ 'user': 'dino', 'default': 0 },
{ 'user': 'wilma', 'default': 1 },
{ 'user': 'fred', 'default': null }
],
userNull = [],
userFull = [];
users.forEach(e => e.default == void 0 ? userNull.push(e) : userFull.push(e));
document.write("<pre> userNull:\n" + JSON.stringify(userNull, null, 2) + "</pre>");
document.write("<pre> userFull:\n" + JSON.stringify(userFull, null, 2) + "</pre>");