使用循环推入数组,该数组是Map中的值

时间:2019-05-02 18:56:25

标签: javascript dictionary

我目前正在尝试创建一个可动态更改映射中数组值的函数。此函数旨在在每个完整循环中在数组中创建一个新元素,以表示要计数的新实例。

该功能用于计算每天有多少游客到一个国家。这是通过地图完成的,键是国家/地区,值是访客列表。每个元素都是特定日期的访客人数。

地图位置:

var countries = new Map();
('England',   [0]);
('France',    [0]);
('Spain',     [0]);
('Poland',    [0]);
('Germany',   [0]);
('Russia',    [0]);

对于代码:

for(var day = 0; day < daysBack; day++){
    var dateToFind = (currentDate.date() + " / " + 
        currentDate.month() + " / " + 
        currentDate.year());

    var detectionsOnDate = getActivity(dateToFind ); 
    // Returns an array of locations visited, each visit is a new element 
    // eg. ["France", "France", "England", "France"]

    for(var detectionLocation of detectionsOnDate){
        for(var[location, visits] of countries ){
            if(location == detectionLocation){
               countries.set(location, visits[day]++);
            }
       }
    }
   currentDate.subtract(1, 'days');
}

我正在寻找的结果是一张类似于以下内容的地图:

{
('England',   [242,235,853,122,512]);
('France',        [241,621,173,173,512]);
('Spain',         [62,235,213,465,126]);
('Poland',        [734,163,856,354,142]);
('Germany',       [234,235,643,237,512]);
('Russia',        [174,200,136,107,164]);
}

按照我的逻辑思想,每次执行“ day”的新循环时,都应该在值中创建一个新元素。在一天的每个循环中,应更新地图中的相同元素。

我是JS的新手,所以很抱歉,如果这是一个简单的解决方法,但仍能找到解决方法。任何帮助都适用。谢谢。

1 个答案:

答案 0 :(得分:2)

push返回数组的长度。因此,将为每个键设置一个数字。相反,您可以将concat的新数字value放入set数组,并将其map.set(key, value.concat(value[i]+1)) 放入当前键。

map.set(key, value.concat(0))

const data = '<ABC-HEADER>...'; //

const otherNumber = data.match(/OTHER NUMBER: +(\S.*)/);
console.log(otherNumber[1]); // 068-16975

const filmNumber = data.match(/FILM NUMBER: +(\S.*)/);
console.log(filmNumber[1]); // 13362274