JS对象常见的几种处理

/*
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;
}

 

posted on 2017-03-22 10:09  Frank-  阅读(735)  评论(0)    收藏  举报

导航