У меня есть сокет, который возвращает мне это:
Образец отдельных обновлений (синяя линия):
{
"listBeans": [
{
"fruit": {
"value": "apple"
},
"currentQuantity": {
"value": "1"
},
"type": {
"value": "B"
},
"price": {
"value": "3.1"
}
}
]
}
Образец истории (красная линия):
{
"listBeans": [
{
"fruit": {
"value": "apple"
},
"currentQuantity": {
"value": "1"
},
"type": {
"value": "A"
},
"price": {
"value": "3.1"
}
},
{
"fruit": {
"value": "banana"
},
"currentQuantity": {
"value": "4"
},
"type": {
"value": "A"
},
"price": {
"value": "7.1"
}
}
]
}
Я хочу проверить, существует ли один из этих возвращаемых сокетов в моем списке, если они существуют, я хочу изменить значения из этих, если нет, я хочу, чтобы concat в моем списке
Факты: первыйответом моего сокета всегда будет история фруктов, после этого последующими ответами будут обновления фруктов.
красная линия означает историю, а синие линии означают отдельные обновления
разница невозможна, если обновление или история
первая красная строка: история типа A
вторая красная линия: история типаB
Это то, что я получил слишком далеко:
if (response['listBeans'].length > 1) { // only works if my history returns more than one
this.myList =
this.myList.concat(this.wsFormatter.formatResponse(response['listBeans'])); // will just format my response
this.myList = this.myList.filter(f => f.currentQuantity !== '0'); // i want to display only fruits with quantity bigger than 1
this.myList = this.formatList(this.myList); // this function is important, they will add some keys to my object via Rest API, this function only need to be called when is a new fruit in my list
} else {
for (const item of this.listPositions) {
if (response['listBeans'][0].fruit.value === item.fruit) { // here i verify i the response is the same as my list
item.price = response['listBeans'][0].price.value; // change the value of price in my list
item.currentQuantity = response['listBeans'][0].currentQuantity.value; // change the value of currentQuantity in my list
}
}
}
Как я могу объединить новые ответы в моем списке (массив)? мой код работает, только если моя история больше единицы, если мой ответ на историю равен единице, мой код не работает
Это то, что я хочу: