JavaScript为数组中不存在的键添加零

JavaScript为数组中不存在的键添加零,javascript,arrays,json,object,Javascript,Arrays,Json,Object,我有两个阵列: date_array = ["2020-02-27", "2020-02-28", "2020-02-29", "2020-03-01", "2020-03-02", "2020-03-03", "2020-03-04", "2020-03-05", "2020-03-06", "2020-03-07", "2020-03-08", "2020-03-09", "2020-03-10", "2020-03-11", "2020-03-12", "2020-03-13", "202

我有两个阵列:

date_array = ["2020-02-27", "2020-02-28", "2020-02-29", "2020-03-01", "2020-03-02", "2020-03-03", "2020-03-04", "2020-03-05", "2020-03-06", "2020-03-07", "2020-03-08", "2020-03-09", "2020-03-10", "2020-03-11", "2020-03-12", "2020-03-13", "2020-03-14", "2020-03-15", "2020-03-16", "2020-03-17", "2020-03-18", "2020-03-19", "2020-03-20", "2020-03-21", "2020-03-22", "2020-03-23", "2020-03-24", "2020-03-25", "2020-03-26", "2020-03-27"]

我需要创建第三个数组,其中30个元素只有count的值,如果当天不存在count,则返回0。我如何做到这一点

我试过:

date_array.forEach(element => {
                if (
                  data[date_array.indexOf(element)].date ==
                  date_array[element]
                ) {
                  target_array.push(data[data.indexOf(element)].count_array);
                } else {
                  target_array.push(0);
                }
            });

但是我得到了“无法读取未定义的属性'date'”

为了降低计算复杂性,首先将数组转换为按日期索引的对象。然后,要生成输出数组,只需通过查找对象上的日期,交替使用0:

日期数组=[“2020-02-27”、“2020-02-28”、“2020-02-29”、“2020-03-01”、“2020-03-02”、“2020-03-03”、“2020-03-04”、“2020-03-05”、“2020-03-06”、“2020-03-07”、“2020-03-08”、“2020-03-09”、“2020-03-10”、“2020-03-11”、“2020-03-12”、“2020-03-13”、“2020-03-14”、“2020-03-15”、“2020-03-16”、“2020-03-17”、“2020-03-18”、“2020-03-19”、“2020-03-20”,"2020-03-21", "2020-03-22", "2020-03-23", "2020-03-24", "2020-03-25", "2020-03-26", "2020-03-27"]
计数数组=[{日期:“2020-03-22”,计数:310},
{日期:“2020-03-23”,计数:115},
{日期:“2020-03-24”,计数:78},
{日期:“2020-03-25”,计数:29},
{日期:“2020-03-26”,计数:36},
{日期:“2020-03-27”,计数:3}]
const countsByDate=Object.fromEntries(
count_array.map(({date,count})=>[date,count])
);
const output=date_array.map(date=>countsByDate[date]| 0);

console.log(output);
我会选择@CertainPerformance发布的解决方案,不过,为了提供一个替代方案,在现代javascript(Babel和新版本的现代浏览器)中,可能会有如下内容:

var count = date_array.map(date => 
              count_array.find(item => item.date === date)?.count ?? 0);
请参阅的数组方法和运算符


而且,它不是很优化,因为
find
在整个数组中查找每个
map
的迭代(这就是为什么我会选择另一个答案),但对于一个小数组来说,它是可以忽略不计的。

不错的一个!这个.map帮助了我。我第一次使用了.each,但它似乎更小更快。几分钟前,我在使用WebSocket客户端构建列表时发现了这个。
var count = date_array.map(date => 
              count_array.find(item => item.date === date)?.count ?? 0);