我需要一个函数,它可以从可能包含任意数量数组的数组中返回一个值。它应该像 getValueFromArray(array, [2, 4]) 一样调用 - 此示例应返回传递数组的 2d 数组的第 4 个元素。
这是我的代码:
function getValueFromArray(arr, indexes){
var val,
currentIndex = indexes[0];
if(!arr[currentIndex] || arr[currentIndex] === '') return value = '';
indexes.splice(0, 1);
if(arr[currentIndex].length)
getValueFromArray(arr[currentIndex], indexes);
else {
val = arr[currentIndex];
return val;
}
}
var y = getValueFromArray([[1,2,3,4], [1,2,3,4]], [0, 2]); // should return 3
var x = getValueFromArray([[1,2,3,4], [1,2,3,4], [5,6,7,8]], [2, 3]); // should return 8
var z = getValueFromArray(
[
[[1,2,3,4], [1,2,3,4], [1,2,3,4]],
[[1,2,3,4], [1,2,3,4]]
],
[0, 1, 2]
); // should return 3
这样的调用应该返回3,如果我调试该函数,它实际上返回正确的值,但是当我将它分配给变量时,它返回未定义。我猜这是因为递归,变量在第一次函数调用期间获取了未定义的值。如何解决这个问题?
谢谢!
最佳答案
您没有返回递归结果。
if(arr[currentIndex].length)
getValueFromArray(arr[currentIndex], indexes);
应该是:
if(arr[currentIndex].length)
return getValueFromArray(arr[currentIndex], indexes);
关于javascript - 在 JavaScript 中解析数组的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29658039/