我的结构如下:
var value = 4;
对象值如下图所示(console.log)
我希望在值与player_id匹配时删除整行。 我在下面使用,但看起来它无法删除整行(因为我可以看到'0:对象',即使在删除之后。
for (var key in obj) {
if (obj[key].player_id === value) {
delete obj[key];
break;
}
}
答案 0 :(得分:3)
在数组元素上使用delete
时,它将替换为undefined
。从数组中删除元素的正确方法是使用array.splice()
var obj = [{
player_id: 1,
team_id: 2
}, {
player_id: 2,
team_id: 2
}, {
player_id: 3,
team_id: 1
}, {
player_id: 4,
team_id: 1
}]
var value = 4;
for (var key in obj) {
if (obj[key].player_id === value) {
delete obj[key];
break;
}
}
console.log(obj)
var obj = [{
player_id: 1,
team_id: 2
}, {
player_id: 2,
team_id: 2
}, {
player_id: 3,
team_id: 1
}, {
player_id: 4,
team_id: 1
}]
var value = 4;
for (var i =0; i< obj.length; i++) {
if (obj[i].player_id === value) {
obj.splice(i,1)
break;
}
}
console.log(obj)
此外,for..in
适用于对象。您应该使用for
或任何其他数组函数来遍历数组。
var obj = [{
player_id: 1,
team_id: 2
}, {
player_id: 2,
team_id: 2
}, {
player_id: 3,
team_id: 1
}, {
player_id: 4,
team_id: 1
}]
var value = 4;
var index = obj.findIndex(x=>x.player_id === value);
obj.splice(index,1)
console.log(obj)
注意: array.findIndex
是ES6的一部分,并且会出现兼容性问题。请在使用前咨询。
答案 1 :(得分:1)
我认为这就是你所需要的
<source>
@type tail
path /var/log/nginx/access.log
pos_file /var/log/access.log.pos
tag apache.access
format nginx
</source>
<match apache.access>
@type stdout
</match>
希望这会有所帮助:)