简体   繁体   English

如何在Java中将数据添加到二维地图

[英]How to add data to a 2-D map in Javascript

I mostly develop in Java, but I presently need to do some work using JavaScript. 我主要使用Java开发,但目前需要使用JavaScript进行一些工作。

I have data that I need to group by two dimensions: first by gender, and then by language. 我需要按两个维度对数据进行分组:首先是按性别,然后是语言。 The object to be grouped comes like so: 要分组的对象如下所示:

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

This is what I've tried: 这是我尝试过的:

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];
}

I assumed the above would work, but it's not working. 我以为上面的方法行得通,但是行不通。 It keeps returning this error: 它不断返回此错误:

Uncaught TypeError: Cannot read property 'undefined' of undefined

Note: In Java, I would be creating a map of arrays. 注意:在Java中,我将创建一个数组映射。

You are doing totally wrong. 你做错了 First of all myMap is object not an array so you can not use myMap.push() . 首先,myMap是对象而不是数组,因此您不能使用myMap.push() You can achieve like this. 您可以这样实现。

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

for add 2-d array read this. 对于添加二维数组,请阅读此内容。 2-D Array in javascript JavaScript中的二维数组

One problem: 一个问题:

When you call myMap[_gender][_lang].push[item]; 当您调用myMap[_gender][_lang].push[item]; , what you are actually doing is adding a key to the Object myMap , with the current value of _gender , and turning it into an Object, which you then create a new key for, set to the value of _lang . ,你实际上做的是增加一个关键对象myMap ,与当前值_gender ,并把它变成一个对象,然后创建一个新的关键,设定的值_lang In addition, .push() is a function used with arrays , to add a new item onto the end of the array. 此外, .push()是与数组一起使用的函数,用于将新项目添加到数组的末尾。 If you want to add a new key and value to an Object, all you have to do is just call that key and assign it a value. 如果要向对象添加新的键和值,则只需调用该键并为其分配值即可。 Here's an example. 这是一个例子。

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

Here's my suggestion(assuming I correctly understand what you're trying to do): 这是我的建议(假设我正确理解了您要执行的操作):

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM