如何记录数组的特定值
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);
我有一个大的多维数组,需要一种快速的方法来验证该数组中特定值的出现次数(该值在数组中出现的次数)。 我需要检查的值放在另一个数组中。
数组看起来像这样,其中包含 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);