【问题标题】:Setting the value of a multidimensional object or array property in Javascript在 Javascript 中设置多维对象或数组属性的值
【发布时间】:2017-12-15 17:01:09
【问题描述】:

是的,我知道如何在 Javascript 中循环遍历数组(类型)。事实是,我想知道如何通过一组给定的indexes 设置multiDimensionalArray 数组的值,以使其尽可能通用。例如,我有一个长度为 3 的数组(也可以是 4、100、...的长度):

var indexes = [0, "title", "value"];

我知道可以通过像这样放置索引来设置多维数组(mArray):

multiDimensionalArray[0]["title"]["value"] = "Jeroen";multiDimensionalArray[indexes[0]][indexes[1]][indexes[2]] = "Jeroen";

给定的索引数组可以变化并且并不总是包含相同的索引名称,所以我正在寻找这样的解决方案:

multiDimensionalArray[indexes] = "Jeroen";

如果是这样,我不知道如何对分配进行编码。我在 Google/Stack Overflow 上搜索过。也许我使用了错误的关键字。谁能帮帮我?

谢谢!

【问题讨论】:

    标签: javascript arrays multidimensional-array indexing properties


    【解决方案1】:

    以下示例是我如何通过 Jonas 的示例使其工作的:

    var json = [{
      "hello": {
        "world": 1,
        "world2": 2
      },
      "bye": {
        "world": 1,
        "world2": 2
      }
    }];
    
    var indexes = [0, "hello", "world2"];
    var value = "value";
    
    indexes.slice(0,-1).reduce((obj, index) => obj[index], json)[indexes.pop()] = value;
    console.log(json);

    【讨论】:

      【解决方案2】:

      假设你有这样的结构:

      var array=[[["before"]]];
      

      那你想要

      var indexes=[0,0,0];
      var value="value";
      

      实际去做:

      array[0][0][0]="value";
      

      这可以通过reduce轻松实现:

      indexes.slice(0,-1).reduce((obj,index)=>obj[index],array)[indexes.pop()]=value;
      

      解释:

      indexes.slice(0,-1) //take all except the last keys and
      .reduce((obj,index)=>obj[index] //reduce them to the resulting inner object e.g. [0,0] => ["before"]
      ,array) //start the reduction with our main array
      [indexes.pop()]=value;// set the reduced array key to the value
      

          var array=[[[0]]];
      
      
          var indexes=[0,0,0];
          var value="value";
          indexes.slice(0,-1).reduce((obj,index)=>obj[index],array)[indexes.pop()]=value;
          
          console.log(array);

      【讨论】:

      • 当使用问题中提到的文本索引时,这如何工作?用文本索引替换您示例中的零时,我似乎无法正常工作。我正在使用文本索引,因为 multiDimensionalArray 也可以包含对象数据。
      • 它通过用indexes.slice(0, -1)替换indexes.slice(-1)来工作
      • @jeroen 哦,对了,谢谢你的信息。我很抱歉这个明显的错误......:/
      猜你喜欢
      • 1970-01-01
      • 2017-08-23
      • 2020-08-01
      • 1970-01-01
      • 2021-07-19
      • 2015-12-07
      • 2013-06-11
      • 2020-09-04
      • 2013-10-03
      相关资源
      最近更新 更多