提问人:S.S 提问时间:11/17/2023 更新时间:11/18/2023 访问量:66
使用 Javascript 返回多维数组对象索引的最佳方式
Best way of returning indexes on a multi-dimensional array object with Javascript
问:
我正在尝试为一级方程式比赛创建整个赛季的得分表。每个赛季都是一个数组,该数组具有每场比赛的对象,该对象又包含参与者、车手、车号和他们的网格号。
如果我希望能够找到参加第四场比赛的所有车手的网格号,那么我想遍历车手对象并找到任何符合条件的车手,并返回车手的索引和网格数组的索引号,并将其作为数组传回。
在这种情况下,数组将返回为:
[3,1],[6,2]
因此,f1[0][0].race[0].driver[3][1] = 4 && f1[0][0].race[0].driver[6][2] = 4;
我已经研究了reduce方法,该方法有效,但在使用像f1[0][0]这样的二维数组时无法弄清楚。
我知道对于这个例子,我可以只使用一个for循环,但随着时间的推移,这个数组可能会变得更大。
f1 = [];
f1[0] = [];
f1[0][0] = {};
f1[0][0].race = [];
f1[0][0].race[0] = {};
for(n=0; n<=10; n++){
f1[0][0].race[0].driver[n] = [];
f1[0][0].race[0].grid[n] = [];
};
f1[0][0].race[0].driver[3] = [2,4,6,8,10];
f1[0][0].race[0].grid[3] = [4,9,3,2,7];
f1[0][0].race[0].driver[6] = [1,3,4,6];
f1[0][0].race[0].grid[6] = [3,7,2,1];
f1[0][0].race[0].driver[8] = [2,3,8];
f1[0][0].race[0].grid[8] = [5,4,1];
答:
0赞
Selaka Nanayakkara
11/18/2023
#1
您提供的数据有点误导。无论如何,您可以在下面找到示例多维数组索引查找功能用法:
// Imagine you have a multidimensional array of 3x3 like below :
const multiDimensionalArray = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];
function findIndexes(arr, targetValue, currentPath = []) {
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
const indexes = findIndexes(arr[i], targetValue, [...currentPath, i]);
if (indexes.length > 0) {
return indexes;
}
} else if (arr[i] === targetValue) {
return [...currentPath, i];
}
}
return [];
}
let targetValue = 2; // Searching value
console.log(JSON.stringify(findIndexes(multiDimensionalArray, targetValue))); // Value 2 is in 0th row 1st column (Array indexes start with zero base)
评论