为了账号安全,请及时绑定邮箱和手机立即绑定

如何修改n维数组元素的值,其中索引由Javascript中的数组指定

如何修改n维数组元素的值,其中索引由Javascript中的数组指定

桃花长相依 2022-07-01 16:20:24
我有一个 n 维数组,我想使用另一个数组来访问/修改其中的一个元素来指定索引。我想出了如何访问一个值,但是我不知道如何修改原始值。// Arbitrary values and shapearr = [[[8, 5, 8],        [9, 9, 9],        [0, 0, 1]],       [[7, 8, 2],        [9, 8, 3],        [9, 5, 6]]];// Arbitrary values and lengthindex = [1, 2, 0];// The following finds the value of arr[1][2][0]// Where [1][2][0] is specified by the array "index"tmp=arr.concat();for(i = 0; i < index.length - 1; i++){  tmp = tmp[index[i]];}// The correct result of 9 is returnedresult = tmp[index[index.length - 1]];如何修改数组中的值?是否有更好/更有效的方法来访问值?
查看完整描述

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);


查看完整回答
反对 回复 2022-07-01
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

您可以像这样更改数组中的值,

arr[x][y][z] = value;

这有帮助吗?



查看完整回答
反对 回复 2022-07-01
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

我认为您正在寻找的是:

arr[index[0]][index[1]][index[2]] = value;

我无法理解您在示例的第二部分中尝试做什么。


查看完整回答
反对 回复 2022-07-01
  • 3 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信