如何从JSON数组中删除元素

8

我是一个新手,要学习nodejs和mongodb。我的问题是我有一个以下类型的json:

{ 
 _id: 199,
 name: 'Rae Kohout',
 scores: [ 
     { type: 'exam', score: 82.11742562118049 },
     { type: 'quiz', score: 49.61295450928224 },
     { type: 'homework', score: 28.86823689842918 },
     { type: 'homework', score: 5.861613903793295 }
 ]
}

我想比较“作业”类型的分数,并删除得分最低的作业。为了解决这个问题,我编写了一些代码,如下所示:
var low = '';
for(var i=0;i<doc.scores.length;i++)
{
 if(doc.scores[i].type == 'homework'){
   if(low == ''){
      low = doc.scores[i].score;
   }
   if( doc.scores[i].score > low ){
     console.log("index for lowest score is " + i);
     low = '';
   }
 }
}

现在我能找到最低分数的索引,并希望删除该索引处的值。我尝试使用Array.splice()方法,但它只适用于数组。有人可以帮我解决吗?


你想要最终结果是什么? scores 是一个数组,因此您可以在它上面使用splice方法。 - dc5
2个回答

30

使用splice如下:

doc.scores.splice(index, 1);

2
+1 这是从数组中删除元素的正确方法。 - Chad
当使用两个或多个参数start、deleteCount和(可选)item1、item2等调用splice方法时,从数组索引start开始的deleteCount个元素将被替换为item1、item2等参数。如果有删除的元素,则返回一个包含这些元素的Array对象。- http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.12 - Thomas Schultz
如果我想将它移动到另一个JSON变量中,我该怎么做? - Language Lassi

2
splice() 方法通过删除现有元素和/或添加新元素来更改数组的内容。
如果您想从索引3中删除1个元素,请尝试以下操作:
var myArray = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
var removed = myArray.splice(3, 1);

// removed is ["mandarin"]
// myArray is ["angel", "clown", "drum", "sturgeon"]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接