模仿as3的Array,扩展as1,as2中Array类的功能
"extendArray.as"
Array.prototype.indexOf = function(value, num) {
num = isNaN(num) ? 0 : num;
for (var i = num; i<this.length; i++) {
if (this[i] === value) {
return i;
}
}
return -1;
};
Array.prototype.lastIndexOf = function(value, num) {
num = isNaN(num) ? 0 : num;
for (var i = this.length-1; i>=num; i--) {
if (this[i] === value) {
return i;
}
}
return -1;
};
//生成一个乱序的新数组
Array.prototype.randomization = function() {
var arr = this.slice();
var temp, ran;
for (var i = 0; i<arr.length; i++) {
temp = arr[i];
ran = random(arr.length);
arr[i] = arr[ran];
arr[ran] = temp;
}
return arr;
};
//生成无重复元素的新数组
Array.prototype.noRepeat = function() {
var arr = [this[0]];
var i, j, isNew;
for (i=0; i<this.length; i++) {
isNew = true;
for (j=0; j<arr.length; j++) {
if (this[i] == arr[j]) {
isNew = false;
break;
}
}
if (isNew) {
arr.push(this[i]);
}
}
return arr;
};
//遍历操作
Array.prototype.forEach = function(func, obj) {
for (var i = 0; i<this.length; i++) {
func.apply(obj, [this[i], i, this]);
}
};
//过滤器:提取满足条件的元素组成新的数组
Array.prototype.filter = function(func, obj) {
var arr = [];
for (var i = 0; i<this.length; i++) {
if (func.apply(obj, [this[i], i, this])) {
arr.push(this[i]);
}
}
return arr;
};
//映射器:对每个元素操作生成新数组的各个元素
Array.prototype.map = function(func, obj) {
var arr = [];
for (var i = 0; i<this.length; i++) {
arr.push(func.apply(obj, [this[i], i, this]));
}
return arr;
};
//有一个满足则为真
Array.prototype.some = function(func, obj) {
for (var i = 0; i<this.length; i++) {
if (func.apply(obj, [this[i], i, this])) {
return true;
}
}
return false;
};
//全员满足才为真
Array.prototype.every = function(func, obj) {
for (var i = 0; i<this.length; i++) {
if (!func.apply(obj, [this[i], i, this])) {
return false;
}
}
return true;
};