Js的有些操做会改变原来的对象;有些操做则不会改变原来对象。javascript
数组的filter方法就不会改变原来数组java
利用filter,能够巧妙地去除Array的重复元素:git
'use strict'; var r, arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry']; r = arr.filter(function (element, index, self) { return self.indexOf(element) === index; }); alert(r.toString());
indexOf老是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,所以被filter滤掉了,因此重复的元素仅会保留第一个位置的元素github
参考:https://github.com/mobxjs/mobx/issues/1315数组