1、数组对象去重
Array.prototype.distinct = function(field) {
var set = {},
hasField = typeof(field) != 'undefined';
for(var i = 0; i < this.length ; i++) {
var obj = this[i],
cacheKey = hasField ? obj[field] : obj;
if(cacheKey in set) {
this.splice(i,1);
continue;
} else {
set[cacheKey] = null;
}
}
}
2、提取数组中某个属性相同的数组,并返回数据,但必须是有序数组
ownArr: function(array, attr) {
var arr = [],
array_ = array;
for(var i = 0; i < array_.length;) {
var count = 0;
var arr2 = []
for(var j = i; j < array_.length; j++) {
if(array_[i][attr] == array_[j][attr]) {
arr2.push(array_[j]);
count++;
}
}
arr.push(arr2);
i += count;
}
return arr;
}
3、sort排序规则
compare: function(prop) {
return function(obj1, obj2) {
var val1 = obj1[prop];
var val2 = obj2[prop];
if(!isNaN(Number(val1)) && !isNaN(Number(val2))) {
val1 = Number(val1);
val2 = Number(val2);
}
if(val1 < val2) {
return -1;
} else if(val1 > val2) {
return 1;
} else {
return 0;
}
}
}
4、数组转JSON
changeJson: function(arr) {
var i, jsonstr;
jsonstr = "[{";
for(i = 0; i < arr.length; i++) {
jsonstr += "\"" + arr[i] + "\"" + ":" + "\"" + arr[i] + "\",";
}
jsonstr = jsonstr.substring(0, jsonstr.lastIndexOf(','));
jsonstr += "}]";
return jsonstr;
}