【问题标题】:How to add data to a 2-D map in Javascript如何在 Javascript 中将数据添加到二维地图
【发布时间】:2017-05-09 16:55:52
【问题描述】:

我主要使用 Java 进行开发,但我目前需要使用 JavaScript 做一些工作。

我需要按两个维度对数据进行分组:首先按性别,然后按语言。要分组的对象是这样的:

var items =[ {
  "language":"english",
  "gender":"male",
  ...//twelve other fields
},
...
]

这是我尝试过的:

var myMap = {};
for(var i=0; i<items.length;i++){
  var item = items[i];
  var _gender = item["gender"];
  var _lang = item["language"];
  myMap[_gender][_lang].push[item];
}

我认为上面的方法会起作用,但它不起作用。它不断返回此错误:

Uncaught TypeError: Cannot read property 'undefined' of undefined

注意:在 Java 中,我将创建一个数组映射。

【问题讨论】:

  • 抱歉给您带来了困惑。 items 实际上是一个数组。它来自 REST api 作为数组的响应。
  • 你想要什么。举个例子吧。

标签: javascript multidimensional-array hashmap


【解决方案1】:

一个问题:

当您调用myMap[_gender][_lang].push[item]; 时,您实际上正在做的是向对象myMap 添加一个键,当前值为_gender,并将其转换为一个对象,然后为它创建一个新键,设置为_lang 的值。此外,.push() 是一个与 arrays 一起使用的函数,用于在数组末尾添加一个新项目。如果你想为一个对象添加一个新的键和值,你所要做的就是调用那个键并为其分配一个值。这是一个例子。

var obj = {
  ex1 : 'example 1',
  ex2 : 'example 2'
};

console.log(obj);

obj.ex3 = 'example 3';

console.log(obj);

//The code below will simply log 'undefined' in most consoles(it doesn't happen to do so in this snippet).
console.log(obj.ex4);

这是我的建议(假设我正确理解您要做什么):

var items = [{
  "language":"english",
  "gender":"male",
},
//...more below
];

myMap = [];


for(var i = 0; i < items.length; i++){
  myArray = [];
  var item = items[i];
  var _gender = item["gender"];
  var _lang = item["language"];
  myArray.push(_gender);
  myArray.push(_lang);
  myMap.push(myArray);
}

【讨论】:

    【解决方案2】:

    你完全错了。首先,myMap 是对象而不是数组,因此您不能使用myMap.push()。 你可以这样实现。

    var items = {
      "language":"english",
      "gender":"male"
    }
    var myMap = {};
    for(var key in items){
       var myArray = [];
       var _gender = items["gender"];
       var _lang = items["language"];
       myArray.push(_gender);
       myArray.push(_lang);
       myMap.item = myArray;
       console.log(myMap);
    }
    

    对于添加二维数组,请阅读此内容。 2-D Array in javascript

    【讨论】:

    • 感谢您的回复。我要去测试。但是只要看一下,你的看起来就像一个地图数组,而我需要的是一个数组地图。 IE。一个映射,其中每个键的值都有一个项目数组。
    猜你喜欢
    • 2014-02-22
    • 1970-01-01
    • 2016-07-01
    • 2019-08-05
    • 2015-02-16
    • 2016-07-01
    • 1970-01-01
    • 2011-02-27
    • 2017-08-04
    相关资源
    最近更新 更多