`

js数组的扩展方法

 
阅读更多

1、用于清空数组

 

Array.prototype.clear = function() {
    this.length = 0;
}
 

 

2、判断数据项在数组中的位置

varoldArrayIndexOf = Array.indexOf;//判断是否原始浏览器是否存在indexOf方法
Array.prototype.indexOf = function(obj) {
    if(!oldArrayIndexOf) {
        for(vari = 0, imax = this.length; i < imax; i++) {
            if(this[i] === obj) {
                returni;
            }
        }
        return-1;
    } else{
        returnoldArrayIndexOf(obj);
    }
}

3、判断数据项是否在该数组中

Array.prototype.contain = function(obj) {
    returnthis.indexOf(obj) !== -1;
}

4、把数据项添加到指定的位置

Array.prototype.insertAt = function(index, obj) {
    if(index < 0) index = 0;     if(index > this.length) index = this.length;
    this.length++;
    for(vari = this.length - 1; i > index; i--) {
        this[i] = this[i - 1];
    }
    this[index] = obj;
}

5、返回最有一项数据

Array.prototype.last = function() {
    returnthis[this.length - 1];
}

6、移除数组指定索引的值

Array.prototype.removeAt = function(index) {
    if(index < 0 || index >= this.length) return;
    varitem = this[index];
    for(vari = index, imax = this.length - 2; i < imax; i++) {         this[i] = this[i + 1];     }     this.length--;     returnitem; }

7、移除数据项的数据

Array.prototype.removeAt = function(obj) {     varindex = this.indexOf(obj);     if(index >= 0)
        this.removeAt(index);
}

8、用于数组的查询
用于查询对象数组中对象的某些值,同时支持对已查询属性进行重命名,若查询的属性不在改数组中,则该属性返回为undefined

Array.prototype.select = function(args) {
    varnewItems = [];
    if(typeof(args) === "object"&& arguments.length === 1) {//传入查询的参数为对象时的处理方式
        for(vari = 0, imax = this.length; i < imax; i++) {
            varitem = {};
            for(varkey inargs) {
                if(args[key] !== undefined) {
                    item[key] = this[i][key] === undefined ? "undefined": this[i][key];
                }
            }
            newItems.push(item);
        }
    } elseif(typeof(args) === "string"&& arguments.length === 1) {//传入参数为字符串,且只有一个参数的处理方式
        for(vari = 0, imax = this.length; i < imax; i++) {
            varitem = {};
            varkeys = args.split(',');
            for(vark = 0, kmax = keys.length; k < kmax; k++) {
                variKey = keys[k].split("as");
                if(iKey.length === 1) {
                    item[iKey[0].trim()] = this[i][iKey[0].trim()] === undefined ? "undefined": this[i][iKey[0].trim()];
                } else{
                    item[iKey[1].trim()] = this[i][iKey[0].trim()] === undefined ? "undefined": this[i][iKey[0].trim()];
                }
            }
            newItems.push(item);
        }
    } else{//传入的参数是多个字符串的处理方式
        for(vari = 0, imax = this.length; i < imax; i++) {
            varitem = {};
            for(varj = 0, jmax = arguments.length; j < jmax; j++) {
                if(arguments[j] !== undefined) {
                    variKey = arguments[j].split("as");
                    if(iKey.length === 1) {
                        item[iKey[0].trim()] = this[i][iKey[0].trim()] === undefined ? "undefined": this[i][iKey[0].trim()];
                    } else{
                        item[iKey[1].trim()] = this[i][iKey[0].trim()] === undefined ? "undefined": this[i][iKey[0].trim()];
                    }
                }
            }
            newItems.push(item);
        }
    }
    returnnewItems;
}

 

假设数据对象数组为:var obj = [{ name: "张三", second.age: "24", sex: "男" }
, { name: "张二", age: "21", sex: "女" }
, { name: "张一", age: "23", sex: "男" }
, { name: "张四", age: "25", sex: "女" }
, { name: "张五", age: "22", sex: "男"}];

例一:obj.select(“name,second.age as age,sex”);
例二:obj.select(“name”,”second.age as age”,”sex”);
例三:查询属性对象var arg={name:”",second.age:”",sex:”"};
obj.select(arg);

9,js数组some方法的运用

数组some方法接受2个参数;一个是可以接受3个参数的回调函数,一个是代表执行上下文的对象,some方法返回boolean型;

回调函数是用来判断传入的数组中是否有满足条件的方法编写;

例如:查找数组中是否存在某元素:

 

var arr =[2,3,5,6,7,9];
var id  = 5;
//回调函数,用于做逻辑判断
function back(arr){
     return arr === id;
}
if(arr.some(back)){
     alert('true')
}else{
     alert('false')
}
 some可用来处理复杂的搜索,比如同时判断多个条件:
var found = null;
var points = [ {x: 10, y: 20}, {x: 15, y: 53}, {x: 17, y: 72}];
points.some(function (point) {
 if (point.x > 10 && point.y < 60) { 
 found = point; // found return true;
 } 
 return false;
});
if (found) {
 alert("Found: " + found.x + ", " + found.y); // Found: 15, 53
}

 

我们也可以用forEach来查询,但forEach到达指定的条件后并不能中止代码执行,需要额外抛出异常才能跳出forEach的循环。

 

 

 返回的是满足条件的数组;

扩展链接:http://www.css88.com/jqapi-1.9/jQuery.grep/

-------也可以使用array 的 some方法:

不同的是some方法只要数组中有一个满足条件的,就会返回true,some方法中传入的参数是一个回调函数;

var array = [1,2,3,4,5,9]

function back(arr){

         arr >0//arr代表数组中的元素

}

array.some(back(array));//true

分享到:
评论

相关推荐

    js数组相减简单示例【删除a数组所有与b数组相同元素】

    扩展阅读中提及的专题,例如《JavaScript数组操作技巧总结》、《JavaScript遍历算法与技巧总结》等,为读者提供了更多的学习资源。通过这些资源,读者可以更加全面地掌握JavaScript中数组操作的多种技巧和方法,从而...

    JS 数组遍历的方法

    本篇文章将详细介绍几种常见的JS数组遍历方法,并通过实例来加深理解。 1. `for`循环 这是最基础的遍历方式,通过索引来访问数组中的每个元素: ```javascript let arr = [1, 2, 3, 4, 5]; for (let i = 0; i ; i+...

    编程语言中列表/数组扩展方法详解-Python与JavaScript/C++实例

    使用场景及目标:帮助读者深入了解各种主流编程语言中常见的数组/列表扩展方法的工作原理及应用场景,提升编程技能。 其他说明:虽然本文以几个具体例子来展示各语言中的 append 相关操作,但掌握这些基本概念后可以...

    List.js:一个 javascript 数组扩展库

    一个 javascript 数组扩展库 演示 // Create a new empty list var list = new List ( ) ; // Create a new list based on an array var arr = [ 1 , 2 , 3 ] ; var list = new List ( arr ) ; // Add a value to ...

    javascript数组有哪些常见的方法_javascript数组有什么方法.docx

    ### JavaScript 数组常见方法详解 #### 一、前言 JavaScript 中的数组是一种非常重要的数据结构,用于存储一系列有序的数据。本文将详细介绍 JavaScript 数组的一些常用方法及其应用场景,帮助开发者更好地理解和...

    Javascript数组操作整理.rar

    本资料"Javascript数组操作整理"聚焦于JavaScript中的数组操作,旨在帮助开发者更好地理解和掌握相关知识。 1. 创建数组: JavaScript提供了多种创建数组的方式,如字面量语法`var arr = [元素1, 元素2, ...]`,或...

    js 数组工具类 ArrayUtil

    在JavaScript中,数组是一种常用的数据结构,用于存储和操作一系列有序的数据。ArrayUtil是一个实用的JavaScript...此外,分析源码还可以帮助我们理解面向对象编程、函数式编程以及JavaScript数组操作的内部工作原理。

    js数组方法扩展实现数组统计函数

    10. **实例方法与原型方法的区别**:在jQuery中,通过$.extend添加的方法是可应用于所有jQuery实例的,而通过Array.prototype扩展的方法则成为了JavaScript数组对象固有的方法。 通过这篇文章,我们可以学习到如何...

    extarray:Javascript 数组扩展

    ##Javascript 数组扩展 向 js 数组添加了一些函数 array.min() / array.max() :返回值数组的最小值/最大值 array.minBy(prop) / array.maxBy(prop) :返回具有属性prop的对象的最小值/最大值 array.toArray(prop) :...

    php数组去重和js数组去重最简方法

    对于JavaScript数组去重,有多种简单的方法。首先是使用ES6的Set对象,Set类似于数组,但不允许重复值: ```javascript let uniqueArray = [...new Set(array)]; ``` 这段代码首先创建一个Set,然后使用扩展运算符`...

    JavaScript常用数组操作方法.docx

    ### JavaScript 常用数组操作方法详解 #### 一、前言 在现代Web开发中,JavaScript 是一种不可或缺的语言,而数组则是JavaScript中最基础也是最常用的数据结构之一。数组允许我们存储一系列有序的数据项,这些数据...

    JavaScript实现Array(数组)和Map

    JavaScript数组可以包含任意类型的值,包括数字、字符串、对象等。此外,JavaScript提供了一系列内置方法来操作数组,如push()用于在数组末尾添加元素,pop()用于移除末尾元素,slice()用于提取数组的一部分,concat...

    js实现prototype扩展的方法(字符串,日期,数组扩展)

    3. **数组扩展**: - 可以添加如`forEach`、`each`、`contains`、`unique`等方法,以增强数组操作的便利性。例如,`forEach`用于遍历数组并执行回调函数,`each`与`forEach`类似,`contains`检查数组中是否存在某个...

    ES6中的数组扩展方法

    在JavaScript的ES6版本中,引入了一系列增强数组处理的新特性,其中包括了“数组扩展方法”。这些方法极大地提高了数组操作的便捷性和灵活性,使得开发者能够更加高效地处理数组数据。本篇文章将深入探讨其中的两个...

    javascript数组的扩展实现代码集合

    ### JavaScript 数组扩展方法知识点详解 #### 一、前言 在JavaScript开发中,数组是极为常用的数据结构之一。为了更好地利用数组的功能,开发者经常...希望本文能够帮助大家更好地理解和使用JavaScript数组扩展方法。

    js实现json数组分组合并操作示例

    这展示了如何在JavaScript中动态扩展数组。 5. **最终结果**: 结果数组`dest`中的每个元素都包含一个`data`属性,这是一个包含具有相同`id`的所有原始元素的数组。这样就完成了分组合并操作,将原始数组中具有...

    javascript数组

    ### JavaScript 数组详解 #### 一、数组的基本操作 ...通过以上介绍,我们不仅了解了如何创建和操作数组,还深入探讨了数组的各种属性和方法,这将有助于更好地理解和使用 JavaScript 中的数组功能。

    js一维数组、多维数组和对象的混合使用方法.docx

    JavaScript数组的灵活性使得我们可以混合存放各种类型的数据。 接着,对象则提供了键值对的存储方式,便于我们通过特定的键来访问和操作数据: ```javascript var person = { name: "飞鱼", age: 25, height: ...

    js 数组的变化

    JavaScript数组不仅可以包含基本数据类型(如字符串、数字、布尔值),还可以包含复杂数据类型,如对象和其他数组,这体现了JS中的灵活性。在这个“js数组的变化”主题中,我们将深入探讨数组的一些关键特性和它们与...

Global site tag (gtag.js) - Google Analytics