我有一个订单数组,当我从我的WebSocket收到一个新的放置顺序或修改的顺序的消息时,我想检查我的订单数组,如果有一个现有的订单与websocket消息替换数组中的对象与websocket消息,否则将其推到数组中。
例如:
const orderArr = [
{
id: 1,
item: 'apple',
price: 20
},
{
id: 2,
item: 'mango',
price: 10
},
{
id: 3,
item: 'cucumber',
price: 300
}
]
const webSocketOrder = {
id: 1,
item: 'apple',
price: 40
}
// what should happen to the order array
[
{
id: 1,
item: 'apple',
price: 40
},
{
id: 2,
item: 'mango',
price: 10
},
{
id: 3,
item: 'cucumber',
price: 300
}
]
但是如果webSocketOrder
是具有新id的新项目,则应将其作为新项目添加到orderArr
中
我做了什么
const foundOrder = orderArr.find(
(x) => x.id === webSocketOrder.id
);
if (foundOrder) {
orderArr.map((ord) =>
ord.id === webSocketOrder.id
? webSocketOrder
: ord
);
} else {
orderArr.unshift(webSocketOrder);
}
这是因为某种原因不起作用,有人能帮忙吗?
2条答案
按热度按时间l3zydbqr1#
可以使用find()/findIndex()对数组进行一次循环。
nfg76nw02#
如果您要替换顺序(不将数组视为不可变),则可以使用
splice