我有一个数组数组,这些数组是从csv文件返回的。我试图根据数组中的标题来过滤出数组的每个索引。例如:
如果数组的索引名为“零售”,则返回包含某些值的整个索引。
这是我的数组:
[
[
"Retail",
"22,477",
"24,549",
"19,580",
"15,358",
],
[
"Online",
"8,653",
"7,586",
"2,432",
"4,321"
],
[
"In Store",
"2,532",
"2,836",
"5,632",
"7,325"
]
]
我尝试了这两种单独的方式,并且都返回0数组:
filtArr = dataList.filter(name => name.includes('Retail')) //expecting the array length 5 with "Retail" and it's values
尝试2
filtArr = dataList.filter(function (name) {
return (name === "Retail")
})
预期收益为:console.log(filtArr) // [ 0. "Retail", 1. "22,477", 2. "24,549", 3. "19,580", 4. "15,358"
答案 0 :(得分:3)
检查数组是否包含某些项目的一种好方法是使用indexOf方法对其进行测试。 如果找不到该项目或其索引,它将返回-1。
您可以执行以下操作以在其中存储所有包含“零售”的数组:
let retailArrays = [];
arrayOfArrays.forEach(
array => {
if( array.indexOf('Retail') !== -1) {
retailArrays.push(array);
};
}
)
答案 1 :(得分:1)
您显然在某些名称后面有空格,因此"Retail"
实际上是"Retail "
。
看起来名称也始终是嵌套数组的第一个元素,因此无需搜索整个数组。
因此,在第一个元素上使用trim()
删除周围的空格。
filtArr = dataList.filter(arr => arr[0].trim() == 'Retail');
var dataList = [
[
"Retail",
"22,477",
"24,549",
"19,580",
"15,358",
],
[
"Online",
"8,653",
"7,586",
"2,432",
"4,321"
],
[
"In Store",
"2,532",
"2,836",
"5,632",
"7,325"
]
];
filtArr = dataList.filter(arr => arr[0].trim() == 'Retail');
console.log(filtArr);