删除javascript数组中的特定对象

1 javascript arrays object splice

我正在测试删除数组中的对象...因为这是一个测试,这是一个非正式的代码..

<script type="text/javascript">

// initialize array and objects
var fruits = new Array();

var z = {
  test1: "test0",
  test2: "test2"
}

fruits.push(z);
var z2 = {
  test1: "test1",
  test2: "test2"
}
fruits.push(z2);
var z3 = {
  test1: "test2",
  test2: "test2"
}
fruits.push(z3);
var z4 = {
  test1: "test3",
  test2: "test2"
}
fruits.push(z4);
var z5 = {
  test1: "test4",
  test2: "test2"
}
fruits.push(z5);

// display array length
document.write("array length is " + fruits.length + "<br>");

// traverse array
for(var x = 0; x < fruits.length; x++){

  // display object content in array
  document.write(fruits[x].test1 + " ");

  // delete object in array where variable test1 is equal to "test2"
  if(fruits[x].test1 == "test2"){
    fruits.splice(x, 1);
    //document.write("array length is " + fruits.length + "<br>");
  }
}
</script>
Run Code Online (Sandbox Code Playgroud)

现在这段代码工作正常(删除数组上的一个对象),但它删除了我要删除的那个之后的那个(在上面的代码中,我想删除索引2中的对象,但它删除了索引3中的对象)

我在这段代码中做错了什么?

TIA :)

小智 6

在迭代时不应该尝试改变数组.而是将要删除的元素的索引保存在变量中,并在for循环后将其删除.