Javascript 如何搜索与每个第一个元素进行比较的数组?

Javascript 如何搜索与每个第一个元素进行比较的数组?,javascript,lodash,Javascript,Lodash,使用vanilla JavaScript或Lodash,如何搜索一个数组,并与每个子数组的第一个元素进行比较,然后返回匹配数组的第二个元素 例如,如果我有这样一个数组: [['22','222'], ['23','223'], ['24','224']] 我有一个数组,包含我要搜索的第一个元素: ['22','23','24'] 对于第一个元素数组中的每个元素,我希望从原始数组中找到与其匹配的第二个元素(“222”、“223”或“224”) 我从API获取此数据,因此无法更改格式。Java

使用vanilla JavaScript或Lodash,如何搜索一个数组,并与每个子数组的第一个元素进行比较,然后返回匹配数组的第二个元素

例如,如果我有这样一个数组:

[['22','222'], ['23','223'], ['24','224']]
我有一个数组,包含我要搜索的第一个元素:

['22','23','24'] 
对于第一个元素数组中的每个元素,我希望从原始数组中找到与其匹配的第二个元素(“222”、“223”或“224”)

我从API获取此数据,因此无法更改格式。

JavaScript解决方案:

var数组=[[22'、[222']、[23'、[223']、[24'、[224'];
var结果;
for(设i=0;i
试试这个

var条件=['22','23','24'];
风险值数据=[
['22','222'], 
['23','223'], 
['24','224'],
['25','225'],
['26','226']
];
var结果=数据过滤器(函数(el){
返回条件.indexOf(el[0])>=0;
}).地图(功能(el){
返回el[1];
});

控制台日志(结果)不确定您需要搜索此“矩阵”多少次,但如果您需要多次搜索,我认为您应该自己调整格式,如下所示:

var arr = [['22','222'], ['23','223'], ['24','224']];
var dict = {};
for (var i = 0; i < arr.length; i++) {
    dict[arr[i][0]] = arr[i][1];
}
var arr=[[22'、[222']、[23'、[223']、[24'、[224'];
var dict={};
对于(变量i=0;i

由于此格式更改操作,单次搜索可能会使您付出代价,并且在您执行此操作之后,您将要执行的任何检索都将是高效的。

这是一个纯Javascript解决方案,其中包含一个可利用的函数

some()
方法测试数组中的某个元素是否通过了所提供函数实现的测试

var数组=[[22'、[222']、[23'、[223']、[24'、[224'];
函数getValue(v){
var-r;
array.some(函数(a){
如果(a[0]==v){
r=a[1];
返回true;
}
});
返回r;
}
document.write(getValue(0)+'
');//未定义
document.write(getValue('23'));/'223'
遍历数组检查,查看当前数组项的第一个元素是否与搜索项相同,如果找到匹配项,则返回第二个元素

这将只返回找到的第一个匹配元素(如果没有找到匹配项,则返回未定义的元素),但这似乎就是您要查找的内容,如果是这样,这将比大多数其他答案更有效

var arr=[[22'、[222']、[23'、[223']、[24'、[224'];
功能搜索(arr,术语){
如果(arr[i][0]==期限)返回arr[i][1];
}
//仅供演示之用
函数演示(键){document.write(键+'=>'+搜索(arr,键)+'
');} var find=['22'、'23'、'24'、'25']; 对于(var i in find)演示(find[i])如果可用,
Array#find
使其变得简单明了:

arr.find(sub => sub[0]==='23')[1]
要处理未找到的情况(将返回未定义):


您希望得到什么样的输出?如果您知道如何为
循环编写
,如何通过索引访问数组成员,以及如何进行相等比较,那么您就知道如何做到这一点。那么你不知道哪一部分?@Alexander我想通过匹配第一个元素来选择数组的第二个元素。例如,通过说
找到第一个元素设置为
23`的数组,并给它第二个元素`我应该得到
223
@斜视,问题是,我有数组中的第一个元素(在本例中为22,23,24)。。。我循环了一遍,试图通过匹配得到第二个元素。在内部添加另一个循环可能会变得丑陋,对吗?希望我们能有更好的解决方案。获取元素不需要循环。不需要第二个循环,因为您已经知道要比较索引
0
处的值,如果匹配,则检索索引
1
处的值。既然OP似乎可以使用lodash,我该怎么做?在API设计方面,如果找不到,我宁愿返回未定义的。@torazaburo我已经用我的例子更新了我的例子。我喜欢你的ES6例子。
(arr.find(sub => sub[0] === '23') || []) [1]