Javascript 基于特定索引中的2个或多个值筛选嵌套数组

Javascript 基于特定索引中的2个或多个值筛选嵌套数组,javascript,arrays,filter,indices,Javascript,Arrays,Filter,Indices,我有一个简单的嵌套数组,如下所示: var test_array = [["0", "0.1", "4.2", "Kramer Street"], ["1", "0.2", "3.5", "Lamar Avenue"], ["3", "4.2", "7.1", "Kra

我有一个简单的嵌套数组,如下所示:

var test_array = [["0", "0.1", "4.2", "Kramer Street"], ["1", "0.2", "3.5", "Lamar Avenue"], ["3", "4.2", "7.1", "Kramer Street"]];
每个子阵列具有0-3的索引和索引。假设我需要一个函数来获取索引2的值,其中索引1=“4.2”和索引3=“Kramer Street”。我知道我可以使用下面这样的方法返回匹配[“4.2”,“Kramer Street”]的子数组,但在我的问题中,这是一个棘手的问题,因为从技术上讲,它返回2个子数组,其中我只希望其中一个子数组根据指定的索引匹配:

var测试\u数组=[
[“0”、“0.1”、“4.2”、“克莱默街”],
[“1”、“0.2”、“3.5”、“拉马尔大道”],
[“3”、“4.2”、“7.1”、“克莱默街”]
];
函数匹配器(array1,array2){
返回array1.every(value=>array2.includes(value));
}
函数数组\语法分析器(数组,关键字){
返回array.filter(值=>matcher(关键字,值));
}
var new_array=array_解析器(test_array,[“4.2”,“Kramer街]);

console.log(新的_数组)您可以使用
数组。查找

var测试\u数组=[
[“0”、“0.1”、“4.2”、“克莱默街”],
[“1”、“0.2”、“3.5”、“拉马尔大道”],
[“3”、“4.2”、“7.1”、“克莱默街”]
];
测试数组。查找(arr=>arr[1]==“4.2”和&arr[3]==“Kramer Street”)[2]

由于要筛选索引和值匹配的数组,请将对象作为第二个参数传递,其中属性是唯一索引,值是要匹配的字符串。 由于数组索引本身是唯一的,因此对象是最合适的,因为其属性也必须是唯一的

然后使用:,最后按对匹配:

/**
*“索引有值”的子数组的筛选器数组
*@param{Array}arr要筛选的数组
*@param{Object}ob对象与索引/值对
*@return{Array}子数组的过滤数组。
*/
常数filterByIndexValue=(arr,ob)=>
arr.filter(sub=>Object.entries(ob.every)([i,v])=>sub[i]==v));
//演示时间:
常量测试_数组=[
[“0”、“0.1”、“4.2”、“克莱默街”],

[“3”、“4.2”、“7.1”、“Kramer Street”],//这很好用。使用索引值作为键是个聪明的主意。谢谢。谢谢!很高兴它对@gwydion93有帮助