我正在尝试使用 .filter()
方法修改 Vue.js 列表中的元素。新元素来自Pusher。我正在监听该事件并尝试像这样更新元素:
users.filter((obj) => {
Echo.private(`user.${obj.id}`).listen('.userupdated', (e) => {
return obj = e.user; // or return e.user; also doesn't work
});
});
这行不通。两个对象在结构上是相同的,但通过 Pusher 传入的新对象包含更新的信息。
另一方面,当我尝试修改属性时,它会起作用:
users.filter((obj) => {
Echo.private(`user.${obj.id}`).listen('.userupdated', (e) => {
return obj.name = e.user.name;
});
});
我做错了什么?不允许像这样替换整个元素吗?
最佳答案
根据MDN过滤器的作用是这样的:
The filter() method creates a new array with all elements that pass the test implemented by the provided function.
所以你所做的基本上是以错误的方式使用 Filter 。 您应该做的是在事件触发时迭代旧数组并随时更新它。
我的建议:在事件发生时,调用一个仅用于该目的的函数,并使用更新的值和位置来替换它,然后以编程方式处理它!
关于javascript - 使用过滤器方法修改数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57485376/