我看过这篇文章:To find Index of Multidimensional Array in Javascript
我喜欢这个答案,但我正在尝试将其扩展到三维数组。这就是我到目前为止所拥有的。任何帮助将不胜感激。
/**
* Index of Multidimensional Array
* @param a1,a2 {!Array} - the input arrays
* @param k {object} - the value to search
* @return {Array}
*/
function getIndexOfK(a1, a2, k) {
for (var i = 0; i < arr.length; i++) {
for (j=0; j<a2.length;j++){
var index = arr[i][j].indexOf(k);
if (index > -1) {
return [i, j, index];
}
}
}
}
答案 0 :(得分:1)
修改后的Fiddle
你不需要在函数参数上使用第二个数组,你只需要深入研究第三个维度:
org_dict={'k3': [5, 6], 'k2': [3, 2], 'k1': [1, 2]}
filter_data=[[0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 0]]
答案 1 :(得分:0)
三维数组本质上是一个单独的数组。您的输出必须是3个整数的数组,就像您正确完成的那样。
header("Location : ".$filename);
}
答案 2 :(得分:0)
为什么要停在三个方面?我创建了一个递归函数,它只接受一个任何维数的数组,并递归调用自己找到最浅值的路径来查找。
function getIndexPathOf(arr, k) {
// If we're not array, return null;
if (!Array.isArray(arr))
return null;
// If our item is directly within our current
// array, return it's index as an array.
var shallowIndex = arr.indexOf(k);
if (shallowIndex > -1)
return [shallowIndex];
// Search through our current array, recursively
// calling our getIndexPathOf with the current value.
for (var i = 0, l = arr.length; i < l; i++) {
var path = getIndexPathOf(arr[i], k);
if (path != null) {
// If we found the path, prepend the current index
// and return.
path.unshift(i);
return path;
}
}
// If nothing was found, return null.
return null;
}
console.log(getIndexPathOf([1, 2, 3], 3)); // [2]
console.log(getIndexPathOf([1, 2, 3], 4)); // null
console.log(getIndexPathOf([1, 2, ['A', [0, 10, 20, [3, 6]], 'B'], 4, 5], 3)); // [2, 1, 3, 0]
console.log(getIndexPathOf([1,[2],[[3]],[[[4]]],[[[[5]]]]], 5)); // [4, 0, 0, 0, 0]
&#13;
答案 3 :(得分:0)
尝试这种功能性方法:
const mda = [
[
[1, 2],
[3, 4]
],
[
[5, 6],
[7, 8]
],
[
[9, 10],
[11, 12]
]
]
const findIt = (arr, t) => arr.reduce((a, e, i) => a || e.reduce((a1, e1, j) => {
if (a1) return a1
const index = e1.indexOf(t)
if (index >= 0) return [i, j, index]
}, null), null)
console.log(findIt(mda, 10))
&#13;