繁体   English   中英

Javascript 如果不存在,则将新元素添加到元素数组

[英]Javascript Add new element to array of elements if not exists

我有一个像这样的数组:

 [{"x": 2020-06-27T08:00:00.000Z, "y": 33},
 {"x": 2020-06-27T10:00:00.000Z, "y": 500},
 {"x": 2020-06-27T12:00:00.000Z, "y": 98},
 {"x": 2020-06-27T14:00:00.000Z, "y": 344},
 {"x": 2020-06-27T22:00:00.000Z, "y": 1}]

该数组已经从最早到最新进行了预排序。 我需要做的是通过数组的“x”(这是一个日期),并检查是否有一些偶数小时(如 0、2、4 .. 或 22)不存在,如果不存在,则添加新的日期中包含该小时“x”且“y”值为零的条目。

有什么有效的方法吗? 最后,数组应该看起来像:

[{"x": 2020-06-27T00:00:00.000Z, "y": 0},
 {"x": 2020-06-27T02:00:00.000Z, "y": 0},
 {"x": 2020-06-27T04:00:00.000Z, "y": 0},
 {"x": 2020-06-27T06:00:00.000Z, "y": 0},
 {"x": 2020-06-27T08:00:00.000Z, "y": 33}, 
 {"x": 2020-06-27T10:00:00.000Z, "y": 500}]

等等,

使用 moment lib 生成所有时间表,然后使用 map function 传输数组。

 var start = moment.utc("2020-06-27").startOf('day'); var end = moment.utc("2020-06-27").endOf('day'); const origArray = [{"x": "2020-06-27T08:00:00.000Z", "y": 33},{"x": "2020-06-27T10:00:00.000Z", "y": 500},{"x": "2020-06-27T12:00:00.000Z", "y": 98},{"x": "2020-06-27T14:00:00.000Z", "y": 344},{"x": "2020-06-27T22:00:00.000Z", "y": 1}] const schedulesArray = [] let currentTime = start while (currentTime.isBefore(end)){ schedulesArray.push(currentTime.toISOString()) currentTime = currentTime.add(2, 'hours') } const newArray = schedulesArray.map(t => { const existingOrig = origArray.filter(o => ox === t) if(existingOrig.length > 0){ return JSON.stringify(existingOrig[0]) }else{ const newObj = {} newObj.x = t newObj.y = 0 return JSON.stringify(newObj) } }); console.log('arr ' + newArray)
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.2.1/moment.min.js"></script>

暂无
暂无

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

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