开发者问题收集

Javascript - TypeError:无法读取未定义的属性“type”

2017-06-24
922

我有一个名为 arr 的数组,其中嵌套了对象,如下例所示:

[{"type" : "space", "content" : "value", /*etc.*/},
{"type" : "space", "content" : "value", /*etc.*/},
{"type" : "other value", "content" : "value", /*etc.*/},
 /*Other nested objects*/
];

因此,我尝试循环遍历该数组以检查循环当前“聚焦”的对象之后的对象是否包含“type”属性,然后检查它的 type 属性是否设置为“space”,如果是,则将其从数组中删除

这是出现类型错误的代码段:

for (var i = 0; i < arr.length; i++){
  if (arr[i].type && arr[i + 1].type){
    if (arr[a].type == "space" && arr[a + 1].type == "space"){
      arr.pop(arr[a]);
    }
  }
}

我做错什么了吗,因为它似乎对第二行的 arr[i + 1] 不满意

如果您希望我扩展任何我尚未说明的内容,请询问。
非常感谢。

1个回答
for (var i = 0; i < arr.length-1; i++){

当您访问 i+1 时,您需要尽早停止迭代...

此外,Array.pop 始终会删除最后一个元素。您想要拼接:

arr.splice(i,1);
i--;//keep index at the right position
Jonas Wilms
2017-06-24