对于含有对象的复杂数组而言,创建新数组使用简单的indexOf判断新数组是否含有数组元素是不适用的,这里需要用到reduce的方法:
var array = [ {"sort":"1","name":"老王"}, {"sort":"2","name":"老李"}, {"sort":"3","name":"老张"}, {"sort":"4","name":"老岳"}, {"sort":"5","name":"老刘"}, {"sort":"1","name":"老王"}, ]; unique(array); //利用reduce方法遍历数组,reduce第一个参数是遍历需要执行的函数,第二个参数是item的初始值 function unique(arr){ var obj = {}; arr = ary.reduce(function(item, next) { obj[next.sort] ? '' : obj[next.sort] = true && item.push(next); return item; },[]); return arr; }