Установить массив как значения карты в Javascript - PullRequest
0 голосов
/ 02 апреля 2019

Мне нужно иметь эквивалент хэш-карты в JavaScript. Кажется, карта является правильным выбором. Однако мне нужно установить значение каждой пары на карте в виде массива. Например, MyMap: ключ1: параметр1 значение1: [1, 2, 3]

key2: param2 значение2: [3, 4, 5]

Я посмотрел на следующую страницу, но не мог понять, как это сделать. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/has

Цель этого состоит в том, чтобы я пытался извлечь данные в сказке на странице HTML. По сути, я хочу использовать хеш-карту для организации всех данных в таблице. Таким образом, каждое имя столбца будет ключом хеш-карты, а соответствующие значения в столбце будут значением, соответствующим этому ключу.

Ниже приведены коды, которые я пытаюсь использовать:

function (data) {                    
                $.each(data, function (key, value) {
                    tempData += '<tr>';
                    tempData += '<td>' + value.name + '</td>';
                    tempData += '<td>' + value.value + '</td>';

                    //check whether the key already exists in the map
                    if (measurementDataMap.get(value.name) == undefined) {
                        //if the key doesn't exist, the value points to an empty array
                        measurementDataMap[value.name] = [];
                    }
                    measurementDataMap[value.name].push(value.value);
                });

Я не могу понять, как создать пустой массив для значения новой пары. Спасибо!

Ответы [ 2 ]

2 голосов
/ 02 апреля 2019

Просто простой объект:

var param1 = "myParam1", param2 = "myParam2", value1 = [1, 2, 3], value2 = [3, 4, 5];

var myObject = {
  [param1]: value1,
  [param2]: value2
};

console.log(myObject);

Чтобы исправить свой текущий код:

function(data) {
  $.each(data, function(key, value) {
    tempData += '<tr>';
    tempData += '<td>' + value.name + '</td>';
    tempData += '<td>' + value.value + '</td>';

    //check whether the key already exists in the map
    measurementDataObj[value.name] = measurementDataObj[value.name] || [];
    measurementDataObj[value.name].push(value.value);
  });
}
1 голос
/ 02 апреля 2019

В своем коде вы смешиваете синтаксис доступа к свойству и методы Map, используйте один из них:

const measurementDataMap = {};
//...
if(measurementDataMap[value.name] == undefined) {
    measurementDataMap[value.name] = [];
}
measurementDataMap[value.name].push(value.value);

 // OR

const measurementDataMap = new Map;
//...
if(!measurementDataMap.has(value.name))
  measurementDataMap.set(value.name, []);


measurementDataMap.get(value.name).push(value.value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...