在对象上使用 jQuery grep

Using jQuery grep on an object

我有一个看起来像这样的对象:

const myObject = {
  3723723: null
 ,3434355: true
 ,9202002: null
}

使用jQuery grep 方法我需要获取值不为空的数组的计数。

const result = $.grep(myArray, function (k, v) { return v != null; });
const count = result.length;

在JavaScript中你可以使用对象来获取你想要的数据结构。

var data = {
  3723723: null,
  3434355: true,
  9202002: null
}

要计算值不为 null 的属性,您可以使用 Object.keys() 获取对象键数组,然后使用 reduce() 获取计数。

var data = {
  3723723: null,
  3434355: true,
  9202002: null
}

var result = Object.keys(data).reduce(function(r, e) {
  if(data[e] != null) r += 1;
  return r;
}, 0);

console.log(result)

你说的变量其实不是数组,而是对象

您不需要 jQuery 来查找非空值的数量。调用 Object.values() 函数获取该对象的值作为数组,然后使用 filter() 方法过滤掉 null 的值,然后检查 length 属性.

const myObject = {
  3723723: null
 ,3434355: true
 ,9202002: null
}

console.log(Object.values(myObject).filter(x => x !== null).length)

使用 Object.keys() 的替代解决方案:

const myObject = {
  3723723: null
 ,3434355: true
 ,9202002: null
}

console.log(Object.keys(myObject)
  .map(x => myObject[x])
  .filter(x => x !== null).length)