在javascript中从类数组中获取对象[重复]

这个问题在这里已有答案:

我有一个类似的javascript类,

class Snake{
    constructor(id, trail){
        this.velocityX = 0;
        this.velocityY = -1;
        this.trail = trail;
        this.id = id;
    }
    moveRight(){
        console.log('move');
    }
}

和一个存储Snake对象的数组 .

this.snakeList = new Array();
this.snakeList.push(new Snake(10, newSnakeTrail));
this.snakeList.push(new Snake(20, newSnakeTrail));
this.snakeList.push(new Snake(30, newSnakeTrail));
this.snakeList.push(new Snake(22, newSnakeTrail));
this.snakeList.push(new Snake(40, newSnakeTrail));

例如,我想从数组中删除id为20的元素 .

我怎样才能做到这一点?

回答(3)

2 years ago

我在这里使用拼接:

for (var i = 0; i < snakes.length; i++) {
    var obj = snakes[i];
    if (obj.id === 20) {
        snakes.splice(i, 1);
        i--;
    }
}

Snippet:

let snakes = [{name: 'fuss', id: 10}, {name: 'huss', id: 20}, {name: 'hurr', id: 60}]

for (var i = 0; i < snakes.length; i++) {
    var obj = snakes[i];
    if (obj.id === 20) {
        snakes.splice(i, 1);
        i--;
    }
}

console.log(snakes)

2 years ago

那这个呢

this.snakeList = this.snakeList.filter(x => x.id != 20);
let snakes = [{name: 'fuss', id: 10}, {name: 'huss', id: 20}, {name: 'hurr', id: 60}]
//Before removal
console.log("Before removal");
console.log(snakes);

snakes = snakes.filter(x => x.id != 20);

//After removal
console.log("After removal");
console.log(snakes);

2 years ago

var snakeList = [
{
id:10,
trail:{}
},
{
id:20,
trail:{}
},
{
id:30,
trail:{}
}
]

snakeList.forEach((x,index)=>{

if(x.id === 20){
snakeList.splice(index,1)
}
})

console.log(snakeList)

看到这是工作的例子,希望这会有所帮助