javascript - 使用过滤器方法修改数组元素

标签 javascript vue.js pusher

我正在尝试使用 .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/

相关文章:

javascript - 使用 Prototype 发布复杂的 JSON 对象

javascript - 从数组中删除项目(useState Hook)

javascript - 如何使用 Vue-Router 在 Vue 中设置 URL 查询参数

php - Laravel Web-socket 和 Chrome `SameSite` 属性

php - Laravel 广播 auth 路由简单地返回 "true"

javascript - SlickNav 菜单覆盖 Logo ,使链接无法点击

javascript - js错误的字符串输出

vue.js - 如何将 bootstrap vue 中的导航栏修复为居中?

vue.js - 在 Vue 中观察数组的添加/删除

vue.js - 如何在 vue js 中使用 Pusher 将数据重写为变量?