/*
arr的值
[{Id:0,Name:"Test0"},{Id:1,Name:"Test1"},{Id:2,Name:"Test2"},{Id:3,Name:"Test3"}]
//其中p表示数组中的一项目
arr.existsItem(function(p){
return p.Id == 3;
});
结束后 arr 的值
true
*/
Array.prototype.existsItem = function (fun) {
for (var i = 0; i < this.length; i++) {
if (fun(this[i]))
return true;
else
continue;
}
return false;
}
/*
arr的值
[{Id:0,Name:"Test0"},{Id:1,Name:"Test1"},{Id:2,Name:"Test2"},{Id:3,Name:"Test3"}]
var findedItemArray = arr.findItems(function(p){return p.Id == 2;})
findedItemArray的值 [{Id:2,Name:"Test2"}]
*/
Array.prototype.findItems = function (fun) {
var tempArr = [];
for (var i = 0; i < this.length; i++) {
if (fun(this[i]))
tempArr.push(this[i]);
}
return tempArr;
}
/*
arr的值
[{Id:0,Name:"Test0"},{Id:1,Name:"Test1"},{Id:2,Name:"Test2"},{Id:3,Name:"Test3"}]
//其中p表示数组中的一项目
arr.removeItems(function(p){
return p.Id == 3;
});
结束后 arr 的值
[{Id:0,Name:"Test0"},{Id:1,Name:"Test1"},{Id:2,Name:"Test2"}]
*/
Array.prototype.removeItems = function (fun) {
for (var i = this.length - 1; i >= 0 ; i--) {
if (fun(this[i])) {
this.splice(i, 1);
}
}
}
/*
类似于C# Lingq 的Select
arr的值
[{Id:0,Name:"Test0",Sex:"男"},{Id:1,Name:"Test1",Sex:"女"},{Id:2,Name:"Test2",Sex:"男"},{Id:3,Name:"Test3",Sex:"女"}]
var newArr = arr.selectItems("Name","Sex");
newArr的值 [{Name:"Test0",Sex:"男"},{Name:"Test1",Sex:"女"},{Name:"Test2",Sex:"男"},{Name:"Test3",Sex:"女"}]
var newArr = arr.selectItems("Name");
newArr的值 ["Test0","Test1","Test2","Test3"]
即如果是多个值,则组成对象 数组,否则就是单个值数组
*/
Array.prototype.selectItems = function () {
var tempArray = [];
for (var i = 0; i < this.length; i++) {
if (arguments.length == 1) {
if (this[i].hasOwnProperty(arguments[0]))
tempArray.push(this[i][arguments[0]]);
}
else if (arguments.length > 1) {
var tempObj = null;
for (var j = 0; j < arguments.length; j++) {
if (this[i].hasOwnProperty(arguments[j])) {
if (!tempObj)
tempObj = {};
tempObj[arguments[j]] = this[i][arguments[j]];
}
}
if (tempObj)
tempArray.push(tempObj);
}
}
return tempArray;
}