我有一个二维数组:
array = [["car","dog","kenya"],["plane", "cat", "kenya"],["boat", "mouse", "england"]]
我想按国家/地区过滤,然后将与该国家“关联”的所有动物归还给另一个数组。
例如,肯尼亚进行的过滤将狗和猫放入另一个数组中。
希望如此。非常感激任何的帮助。谢谢。
答案 0 :(得分:0)
假设您的动物始终处于索引1,则可以使用Array.prototype.filter() 和Array.prototype.map()来实现这一目标。
.filter()
将“过滤”您的2d数组,使其仅包括其中包含国家/地区的数组,然后.map()
通过将所有内部数组“替换”为2d数组,将该2d数组转换为1d数组。是动物(即索引1
)。
请参见下面的工作示例:
const array = [["car","dog","kenya"],["plane", "cat", "kenya"],["boat", "mouse", "england"]],
filterBy = "kenya", // The contry to filter by
animals = array.filter(arr => arr[2] == filterBy).map(elem => elem[1]);
console.log(animals);
答案 1 :(得分:0)
您可以创建一个通用函数,该函数获取要过滤的类型(国家/地区为2)和要匹配的值(例如“肯尼亚”)的索引
array = [["car","dog","kenya"],["plane", "cat", "kenya"],["boat", "mouse", "england"]]
const FILTER_TYPE = { vehicle: 0, animal: 1, country: 2 }
const filter_by = (index, value) => (array.filter(item => (item[index] === value)).map(item => item[FILTER_TYPE.animal]))
console.log(filter_by(FILTER_TYPE.country, 'kenya'))
答案 2 :(得分:0)
您可以过滤数组,然后映射所需的项目。
此解决方案利用了destructuring assignment的优势,其中采用了一个数组,并且这些项都获得了一个名称。
var array = [["car", "dog", "kenya"], ["plane", "cat", "kenya"], ["boat", "mouse", "england"]],
result = array
.filter(([,, country]) => country === "kenya")
.map(([, animal]) => animal)
console.log(result);
答案 3 :(得分:0)
查看您提供的代码,并考虑该国家/地区始终处于索引2中,而动物始终处于索引1中,则可以使用forEach()
循环来获取该特定国家/地区的动物。
var array = [
["car", "dog", "kenya"],
["plane", "cat", "kenya"],
["boat", "mouse", "england"]
];
var country = 'kenya';
var animals = [];
array.forEach((item) => {
if (item[2] === country) {
animals.push(item[1]);;
}
});
console.log(animals);
答案 4 :(得分:0)
在国家肯尼亚中,您可以找到该国家的相关动物。 让我知道,是否需要任何更改。
array = [["car","dog","kenya"],["plane", "cat", "kenya"],["boat", "mouse", "england"]]
array.map((data,i) => {
data.map((dataKey)=>{
if(dataKey === "kenya"){
console.log(array[i])
}
})
})