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