我正在研究一个计算表单,它生成一个带有两个值[selection]的多维数组,如:
[[10,0.5],[18,0.75]]
第二个数组[lookup-table]包含一系列值:
[“10”,“0.5”,“0.1”],[“12”,“0.5”,“1.1”],“”14“,”0.5“,”3.1“,[”16“, “0.5”,“5.1”],[“18”,“0.5”,“7.1”],[“20”,“0.5”,“9.6”],[“22”,“0.5”,“11.6”] ...... [“18”,“0.75”,“9.1”]
我正在尝试将[selection]数组中的索引[0],[1]值与[lookup-table]数组中的索引值相匹配。
[“10”,“0.5”,“0.1”] ...... [“18”,“0.75”,“9.1”]
完成后,我想检索[lookup-table]中索引[x] [2]值的值:
[“10”,“0.5”,“0.1”] ... [“18”,“0.75”,“9.1”]
我确实在这里找到了一个非常有用和类似的问题:JavaScript - Compare two multidimensional arrays
在控制台中,它似乎正确识别数组索引中的匹配。
我正在使用或多或少类似的功能:
function find(haystack, needles) {
var lookupValue = [];
//Iterate through all elements in first array
for(var x = 0; x < haystack.length; x++){
//Iterate through all elements in second array
for(var y = 0; y < needles.length; y++){
/*This causes us to compare all elements
in first array to each element in second array
Since haystack[x] stays fixed while needles[y] iterates through second array.
We compare the first two indexes of each array in conditional
*/
if(haystack[x][0] == needles[y][0] && haystack[x][1] == needles[y][1]){
console.log("match found");
console.log("Array 1 element with index " + x + " matches Array 2 element with index " + y);
//Retrieve the price for the high and low lookup values and store in array
lookupValue = haystack[x][2];
}
}
}
return lookupValue;
}
var totalResult = find(lookupTable, flushGrowthArray ).toString();
但是当我尝试从[lookup-table]中的匹配中检索haystack [x] [2]索引值时,出于某种原因我只返回一个值。
我认为这可能是一个非常简单的错误;我究竟做错了什么?我很欣赏任何新的见解。
答案 0 :(得分:1)
lookupValue = haystack[x][2];
应该是:
lookupValue.push(haystack[x][2]);
所以你把匹配添加到数组。