Javascript 拼接特定条目

Javascript 拼接特定条目,javascript,Javascript,标题说明了一切, 我试图删除一个特定的条目,例如用户id为1的条目 我已经做了一个例子来演示它是如何工作的,由于某些原因,不是每个消息都被删除了,但总有一条消息留下 var messages = [ { user:1, message:'hello' }, { user:1, message:'hello' }, { user:1, message:'hello' } ]; messages.forEach(funct

标题说明了一切, 我试图删除一个特定的条目,例如用户id为1的条目

我已经做了一个例子来演示它是如何工作的,由于某些原因,不是每个消息都被删除了,但总有一条消息留下

var messages = [
    {
    user:1,
    message:'hello'
  },
  {
    user:1,
    message:'hello'
  },
  {
    user:1,
    message:'hello'
  }
];

messages.forEach(function(message, index){
  console.log(message.message);

  if(message.user === 1){
    console.log('remove this message!');
    messages.splice(index, 1);
  }
});

console.log(messages);

最好的方法是使用函数

var messages=[{user:1,message:'hello'},{user:1,message:'hello'},{user:3,message:'hello'}],
结果=messages.filter(({user})=>user!==1);
控制台日志(结果)

。作为控制台包装{max height:100%!important;top:0;}
最好的方法是使用函数

var messages=[{user:1,message:'hello'},{user:1,message:'hello'},{user:3,message:'hello'}],
结果=messages.filter(({user})=>user!==1);
控制台日志(结果)

.as console wrapper{max height:100%!important;top:0;}
在遍历数组时从数组中删除项,这会混淆迭代:

迭代的第一步移除数组中的第一个元素,将每个剩余元素移动一个。迭代的第二步查看数组中的第二个元素。。。它曾经是缩短数组之前的第三个元素。因此迭代器永远不会看到(原始)第二个元素

解决这个问题的一种方法是从阵列的末尾开始,然后朝着开始的方向工作;这样,数组长度的更改就无关紧要了,因为它们只会影响您已经迭代过的元素

var消息=[
{
用户:1,,
留言:“A”
},
{
用户:1,,
留言:“B”
},
{
用户:1,,
留言:“C”
}
];
对于(var i=messages.length-1;i>-1;i--){
var message=消息[i];
如果(message.user==1){
log('删除此消息!');
信息.拼接(i,1);
}
}

控制台日志(消息)您在遍历数组时正在从数组中删除项,这会混淆迭代:

迭代的第一步移除数组中的第一个元素,将每个剩余元素移动一个。迭代的第二步查看数组中的第二个元素。。。它曾经是缩短数组之前的第三个元素。因此迭代器永远不会看到(原始)第二个元素

解决这个问题的一种方法是从阵列的末尾开始,然后朝着开始的方向工作;这样,数组长度的更改就无关紧要了,因为它们只会影响您已经迭代过的元素

var消息=[
{
用户:1,,
留言:“A”
},
{
用户:1,,
留言:“B”
},
{
用户:1,,
留言:“C”
}
];
对于(var i=messages.length-1;i>-1;i--){
var message=消息[i];
如果(message.user==1){
log('删除此消息!');
信息.拼接(i,1);
}
}
控制台日志(消息)
var消息=[
{
用户:1,,
留言:“你好”
},
{
用户:2,,
留言:“你好”
},
{
用户:3,,
留言:“你好”
}
];
var newMessages=messages.filter(message=>message.user!==1);
console.log(newMessages)
var消息=[
{
用户:1,,
留言:“你好”
},
{
用户:2,,
留言:“你好”
},
{
用户:3,,
留言:“你好”
}
];
var newMessages=messages.filter(message=>message.user!==1);

console.log(newMessages)我提供的代码有什么问题,为什么不起作用?编辑:您的代码仍然会输出一条消息。@OrpheuZ是一个例子,我把一个
用户===3
我提供的代码有什么问题,为什么不起作用?编辑:您的代码仍然会输出一条消息。@OrpheuZ就是一个例子,我在这里输入了一个
user==3