【问题标题】:Transform bidimensional array in a multidimensional depth array in Javascript [closed]在Javascript中将二维数组转换为多维深度数组[关闭]
【发布时间】:2017-08-26 23:59:24
【问题描述】:

我有一个这样的 Javascript 数组:

[
    "values": [
        "Gray",
        "Beige",
        "Black"
    ],  
    "values": [
        "Large",
        "Small",
        "Medium"
    ]
]

并且,我需要将其转换为以下内容:

[
    "Gray": [
        "Large": 0,
        "Small": 0,
        "Medium": 0
    ],
    "Beige": [
        "Large": 0,
        "Small": 0,
        "Medium": 0
    ],
    "Black": [
        "Large": 0,
        "Small": 0,
        "Medium": 0
    ]:
] 

主要的复杂性是第一个数组可以有很多values数组,我需要它的值成为新数组的索引深度。我确信这可以使用循环结构来实现,但我已经厌倦了尝试。

我接受任何解决方案,使用 Javascript 和/或 jQuery 代码:)。

【问题讨论】:

  • 请说明您尝试过的方法无效。这不是免费的代码编写服务。这里的想法是让我们帮助修复您的代码
  • 你没有这样的数组。它不是数组,也不是对象。
  • 这不是一个有效的 JavaScript 数组。 JavaScript 数组不能有键。

标签: javascript jquery arrays multidimensional-array


【解决方案1】:

首先这两个数组都是无效的。 JavaScript 的数组中不能有键。

您正在寻找一个对象或Map

所以你的第二个无效数组将是一个对象中的一个对象:

{
    Gray:{
        Large: 0,
        Small: 0,
        Medium: 0
    },
    Beige:{
        Large: 0,
        Small: 0,
        Medium: 0
    },
    Black: {
        Large: 0,
        Small: 0,
        Medium: 0
    }:
}

问题是,遍历一个 javascript 对象并不简单,并且不适合这种情况。

所以我会像这样在你的第一级数组中寻找一个地图

var myMap = new Map();

var keyString = 'Gray'

// setting the values
myMap.set(keyString, { Large:0, Small:0, Medium:0 });

然后你可以用 for of 遍历你的地图

for (var [key, value] of myMap) {
  console.log(key + ' = ' + value);
}

请查看Map Docs from MDN for more info

【讨论】:

  • 谢谢,这是一个非常有用的答案。
  • 很高兴,如果您发现它回答了您的问题,我邀请您将其标记为选定答案! :)
猜你喜欢
  • 2014-06-03
  • 1970-01-01
  • 1970-01-01
  • 2021-07-20
  • 2012-08-15
  • 2017-03-22
  • 2013-03-25
  • 2019-07-09
  • 1970-01-01
相关资源
最近更新 更多