3 回答
TA贡献1846条经验 获得超7个赞
这是一个经典的递归算法,因为每个步骤都包含相同的算法:
从索引中弹出第一个索引。
继续使用新弹出的索引指向的数组。
直到你到达最后一个元素indices
- 然后替换最低级别数组中的相关元素。
function getUpdatedArray(inputArray, indices, valueToReplace) {
const ans = [...inputArray];
const nextIndices = [...indices];
const currIndex = nextIndices.shift();
let newValue = valueToReplace;
if (nextIndices.length > 0) {
newValue = getUpdatedArray(
inputArray[currIndex],
nextIndices,
valueToReplace,
);
} else if (Array.isArray(inputArray[currIndex])) {
throw new Error('Indices array points an array');
}
ans.splice(currIndex, 1, newValue);
return ans;
}
const arr = [
[
[8, 5, 8],
[9, 9, 9],
[0, 0, 1]
],
[
[7, 8, 2],
[9, 8, 3],
[9, 5, 6]
]
];
const indices = [1, 2, 0];
const newArr = getUpdatedArray(arr, indices, 100)
console.log(newArr);
TA贡献1794条经验 获得超7个赞
我认为您正在寻找的是:
arr[index[0]][index[1]][index[2]] = value;
我无法理解您在示例的第二部分中尝试做什么。
添加回答
举报