我有两个嵌套数组。

arr1 = [["image1","shirt", "collared",40],["image3","shirt", "buttoned",40]]
arr2 = [["image1","blue"],["image2","red"]]


所需的输出是:如果图像名称(image)匹配,我想将颜色从第二个数组返回到变量。

我试过使用两个for循环:

var color = for (var i = 0; i < arr1.length; i++ ) {
for (var j = 0; j < arr2.length; j++ ) {
if (arr1[i][0] === arr2[j][0]) {
return arr2[j][1]
}
}


由于这是程序的较大部分,因此第一个循环在第二个循环之前执行了很多……但是,两者都按照我指定的顺序相互嵌套了……我正在尝试使用变量来为一些html元素上色,但是我的整个程序被暂停。我不确定我的方法是否正确。

最佳答案

感觉就像您尝试使用第二个数组作为对第一个数组的查找一样。这是将其转换为对象的一种方法:

 function toLookupTable(shirtColors) {

     //keys will be image names, values will be colors
     const lookupTable = {};

     shirtColors.forEach(shirtColor => {
         //use array destructuring
         const [ image, color ] = shirtColor;
         lookupTable[image] = color;
     });
     return lookupTable;
 }

 const colorLookup = toLookupTable( [["image1","blue"],["image2","red"]] );

 console.log(colorLookup["image2"]); //outputs "red"

09-25 18:38