雪洗中关村

导航

JS Array.filter()方法

 

1、filter()接收的函数可以有多个参数。通常我们只使用第一个参数,第二参数和第三个参数表示元素的位置和数组本身:

//去重
var arr = ["1", "2", "4", "2", "1"];
var r = arr.filter(function (element, index, self) {
    return self.indexOf(element) === index;
});
arr = arr; // [1, 2, 4]

2、

/* 
filter()
对数组中的每个元素都执行一次指定的函数(callback),并且创建一个新的数组,
该数组元素是所有回调函数执行时返回值为 true 的原数组元素。它只对数组中的
非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略,同时,新创建的
数组也不会包含这些元素。
回调函数可以有三个参数:当前元素,当前元素的索引和当前的数组对象。
*/
 
// 原始数据
var arrs = [
    { name: "tom", age: 18, sex: "boy" },
    { name: "jim", age: 19, sex: "boy" },
    { name: "anchor", age: 20, sex: "boy" }
];
 
// 过滤条件
var limits = {name: 'tom',age: 18,sex: 'boy'};
 
// filter回调函数
function dofilter(element, index, array) {
  if(limits.name && limits.name != element.name){ // 姓名过滤
    return false;
  }else if(limits.age && limits.age != element.age){ // 年龄过滤
    return false;
  }else if(limits.sex && limits.sex != element.sex){ // 性别过滤
    return false;
  }
  return true;
}
 
/* test */
var filtered = arrs.filter(dofilter);
console.log(filtered);

 

 

9、

<div>
<#list qqList! as qqItem>
    <section class="required" data-type="SINGLE">
        <input disabled type="text" name="n1" value="n1_val" />
        <input disabled type="text" name="n2" value="n2_val" />
    </section>

    <section class="required" data-type="MULTIPLE">
        <input disabled type="text" name="n3" value="n3_val" />
        <input disabled type="text" name="n4" value="n4_val" />
    </section>
</#list>    
</div>

$('section.required').each(function () {
    var type = $(this).attr('data-type');
     if (type == 'MULTIPLE') {
        var inputBeanArr = $(this).find('input:text').filter(function () {
            return !!this.value;
        })
        var v1 = inputBeanArr.eq(0).val(); // n1_val
     }
}

 

posted on 2018-07-13 18:39  雪洗中关村  阅读(4598)  评论(0编辑  收藏  举报