亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何修改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 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號