У меня следующая проблема, у меня есть часть json, возвращенная API:
...
"name": "NEWS",
"products": {
"10432471": {
"id": 10432471,
"productConfig": [
...
]
},
"10432481": {
"id": 10432481
},
"17300241": {
"id": 17300241
},
"17300251": {
"id": 17300251,
"productConfig": [
...
]
},
"18420501": {
"id": 18420501
}
}
...
и я хочу получить случайный простой идентификатор продукта (простой продукт означает, что внутри него нет поля productConfig)
for (i=0;i<res.body.menu.categories.length;i++){
if(res.body.menu.categories[i].name=='NEWS'){
availableProducts = Object.keys(res.body.menu.categories[i].products);
console.log ('avbl prods from news category: ',availableProducts);
for (j=0;;j++){
random=Math.floor(Math.random()*Object.keys(res.body.menu.categories[i].products).length);
if(assert.notInclude(res.body.menu.categories[i].products[random],'productConfig')){
availableProductIdForDelivery = res.body.menu.categories[i].products[random].id;
break;
}
}
}
}
Этот код дает мне ошибку в соответствии со вторым if (if (assert.notInclude ....)) Uncaught AssertionError: проверяемый объект должен быть массивом, картой, объектом, набором, строкой или слабым набором , но не определено.
Итак, внутри "products" у нас нет массива, потому что там {}, а не []?
Есть и другой способ перебора продуктов (их числовые названия меняются каждый день) и сохранение идентификатора в availableProductIdForDelivery