array.pu sh () строит массив, но индексы массива не определены - PullRequest
0 голосов
/ 01 мая 2020

Итак, я работаю со списком объектов для создания массива значений в JavaScript, но по какой-то причине он строит список ключей со значениями. Кажется, я делаю это правильно.

Исходные данные:

"features" : [
    {
      "attributes" : {
        "vehicle_id" : 2077, 
        "cleaning_time" : 1588198260000
      }, 
      "geometry" : 
      {
        "x" : 0, 
        "y" : 0
      }
    }, 
    {
      "attributes" : {
        "vehicle_id" : 2071, 
        "cleaning_time" : 1588258620000
      }, 
      "geometry" : 
      {
        "x" : 0, 
        "y" : 0
      }
    }, 

Создание массива:

let list = [];
for(let item in features){
    let date = new Date(features[item].attributes.cleaning_time)
    if((new Date() - date) < 7200000){
        console.log(features[item].attributes.vehicle_id);
        let veh = features[item].attributes.vehicle_id
        list.push(veh);
    }
}

Окончательный массив:

    []
​
0: 6618
​
1: 2204
​
2: 2204
​
3: 6618
​
4: 2204
​
5: 2204
​
length: 6
​
<prototype>: Array []
app.js:176:11

РЕДАКТИРОВАТЬ: эти данные присоединяются к Еще один источник данных ниже - это функция, которая используется для присоединения на основе vehicle_id.

Присоединение списка к другому источнику данных:

for(let i in data){
    let veh = data[i].vehicle.vehicle.id;
    data[i].vehicle.isClean = list.includes(veh);
}

Этот сценарий предназначен для фильтрации данных, которые Меньше 2 часов. Этот скрипт выполняется каждые 15 секунд и каждый раз переоценивает данные.

1 Ответ

0 голосов
/ 01 мая 2020

Ваш код работает правильно, насколько я могу судить. На основании комментария я скорректировал код.

let list = [];
var features = [
    {
      "attributes" : {
        "vehicle_id" : 2077, 
        "cleaning_time" : new Date() - 100
      }, 
      "geometry" : 
      {
        "x" : 0, 
        "y" : 0
      }
    }, 
    {
      "attributes" : {
        "vehicle_id" : 2071, 
        "cleaning_time" : new Date() - 100
      }, 
      "geometry" : 
      {
        "x" : 0, 
        "y" : 0
      }
    }
]
for(let item in features){
    console.log(item)
    let date = new Date(features[item].attributes.cleaning_time)
    console.log(`(new Date() - date) < 7200000 is ${(new Date() - date) < 7200000}`)
    if((new Date() - date) < 7200000){
        console.log(features[item].attributes.vehicle_id);
        let veh = features[item].attributes.vehicle_id
        list.push(veh)
    }
}
console.log(`list[0] == undefined is ${list[0] == undefined}`)
...