在推送到阵列之前过滤掉重复的对象?

时间:2013-05-02 17:25:35

标签: javascript

我试图在将每个对象推送到数组之前过滤掉重复的对象。

function collaborators() {
  var api = '/docs/' + doc_id + '/json';
  $.getJSON(api, {format: "json"} ).done(function(data) {
    var collaborators = [];
    for (var i = 0; i < data.notes.length; i++) {
      if ( data.notes[i].author === data.notes[i+1].author) {
        console.log('dup found')
        console.log(data.notes[i].author)
      } else {
        collaborators.push(data.notes[i].author);
      }
    }
  });
}

控制台显示“Uncaught TypeError:无法读取未定义的属性'作者'”。但是我看到console.log(data.notes[i].author)中的重复条目,但数组为空。需要纠正的是什么?

1 个答案:

答案 0 :(得分:0)

在循环的最后一次迭代中,没有i+1

data.notes[i+1]

由于未定义,因此在其上调用.author会爆炸。如错误所示,data.notes[i+1]未定义,因此author没有属性undefined