如何记录数组的特定值

How to log specific value of array

我有一个大的多维数组,需要一种快速的方法来验证该数组中特定值的出现次数(该值在数组中出现的次数)。 我需要检查的值放在另一个数组中。

数组看起来像这样,其中包含 20.000 个对象。

var array = [
    {key1: "value", key2: "value", attributes: ["Garden: False", 
    "Green: True"]}, 
    {key1: "value", key2: "value", attributes: ["Garden: True", "Green: 
    True"]}
];

我在我的循环中试过这个:

console.log(array[i].attributes === "Garden: False");

然而它不起作用。 使用 "find all" 工具在 sublime text 中检查它会更容易吗?我已经这样做了,但不确定 sublime 是否找到了我正在搜索的所有 "Garden: False" ……这就是为什么我想记录它。

它不起作用,因为您正在检查一个数组是否等于数组中的一个项目。

要查找该项目是否在数组中,您可以执行以下操作:

console.log(array[i].attributes.indexOf("Garden: False") >= 0);

您需要检查属性数组的值。

var array = [{ key1: "value", key2: "value", attributes: ["Garden: False", "Green: True"] }, { key1: "value", key2: "value", attributes: ["Garden: True", "Green: True"] }];

array.forEach(function(a) {
    console.log(a.attributes.some(function(b) {
        return b === 'Garden: False';
    }));
});

为了计算,您可以使用 Array#reduce

var array = [{ key1: "value", key2: "value", attributes: ["Garden: False", "Green: True"] }, { key1: "value", key2: "value", attributes: ["Garden: True", "Green: True"] }],
    count = array.reduce(function(r, a) {
        return r + a.attributes.some(function(b) {
            return b === 'Garden: False';
        });
    }, 0);

console.log(count);

完成这项工作的许多方法之一是使用 .filter()

var arr    = [{key1: "value", key2: "value", attributes: ["Garden: False", "Green: True"]}, {key1: "value", key2: "value", attributes: ["Garden: True", "Green: True"]}],
    result = arr.filter(o => o.attributes.includes("Garden: False"));
console.log(result)

如果您需要计数,请检查 result.length

您可以将 every 用于一些简短而快速的事情。

var array = [{key1: "value", key2: "value", attributes: ["Garden: False", "Green: True"]},{key1: "value", key2: "value", attributes: ["Garden: True", "Green:True"]},{key1: "value", key2: "value", attributes: ["Garden: True", "Green:True"]},{key1: "value", key2: "value", attributes: ["Garden: True", "Green:True"]}],count = 0;

      array.every((x) => x.attributes[0] === 'Garden: True' ? [count++] : true);

      console.log(count);