首页 > 技术文章 > 数据处理函数$.grep,$.map,$.makeArray,sort

sharpall 原文

jQuery.grep(array, callback, [invert])

使用过滤函数过滤数组元素。

此函数至少传递两个参数:待过滤数组和过滤函数。过滤函数必须返回 true 以保留元素或 false 以删除元素。

invert:如果 "invert" 为 false 或为设置,则函数返回数组中由过滤函数返回 true 的元素,当"invert" 为 true,则返回过滤函数中返回 false 的元素集。

  var list=[{name:"zs",age:17},{name:"ls",age:20},{name:"ww",age:18}];
    var adult=$.grep(list,function (val,index) {
        if(val.age>=18){
            return true
        }
    });
    console.log(adult); //[{name:"ls",age:20},{name:"ww",age:18}]

jQuery.makeArray(obj)

将类数组对象转换为数组对象。

类数组对象有 length 属性,其成员索引为 0 至 length - 1。实际中此函数在 jQuery 中将自动使用而无需特意转换。

jQuery.map(arr|obj,callback)

将一个数组中的元素转换到另一个数组中。

作为参数的转换函数会为每个数组元素调用,而且会给这个转换函数传递一个表示被转换的元素作为参数。转换函数可以返回转换后的值、null(删除数组中的项目)或一个包含值的数组,并扩展至原始数组中。

<body>
    <div id="textArea">
        <span data-val="1">one</span>
        <span data-val="2">two</span>
        <span data-val="3">three</span>
        <span data-val="4">four</span>
    </div>
</body>
<script>
    var spanArray=$.makeArray($("#textArea span")).map(function (obj) {
        var param={}
        param.text=obj.textContent;
        param.value=$(obj).attr("data-val");
        return param;
    });
    console.log(spanArray);//[{text:"one",value:"1"},{text:"two",value:"2"},{text:"three",value:"3"},{text:"four",value:"4"}]
</script>

arrayObject.sort(sortby)

sortby可选。规定排序顺序。必须是函数。

返回值是对数组的引用。

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。

 var list=[{name:"zs",age:17},{name:"ls",age:20},{name:"ww",age:18}];
    list.sort(function (a,b) {
        return a.age-b.age;
    })
    console.log(list);//[{name:"zs",age:17},{name:"ww",age:18},{name:"ls",age:20}]

推荐阅读