js 前端 filter 过滤, 去重, 查找 findIndex 等等

filter用于对数组进行过滤。
它创建一个新数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意:filter()不会对空数组进行检测、不会改变原始数组

例子1:

var arr = [3,9,4,3,6,0,9];  // 返回数组nums中所有大于5的元素。
 var newArr = arr .filter(function (item) {
    return item >5
  });
  console.log(newArr )

项目中:假设 我们操作了某个按钮获取到整个数据,在执行过滤,调取另一个接口

let detailTableValues = res.data.tmInquiryDRespVOS; // 后端返回明细数组
  var newArr = detailTableValues.filter(function (item) {
    return item.lineStatus == 'AGREED'; // 过滤出来数组中单据状态为:已议定的
  });
  // console.log(newArr); 集合成新的数组,并对新数组进行处理
  detailTableValues = newArr.map((item) => {
    console.log(item);
    return {
      ...item,
      inquiryDId: item.id
    };
  });
  let paramstotal = {
    inquiryDocType: 'NONSTANDARD',
    tmComparisonDSaveVOS: detailTableValues // 详情明细行id
  };
  console.log(paramstotal);
  const res1 = await service.comparative(paramstotal);
  if (res1.success) {
    ElNotification({ type: 'success', message: res1.msg });
    this.tableRef.getTableData();
  } else {
    ElNotification({
      type: 'error',
      message: res1.msg || res1.data || '操作失败!'
    });
  }

案例2 :数组去重

var r = arr.filter(function (element, index, self) {
        return self.indexOf(element) == index;
});
去除重复元素依靠的是indexOf总是返回第一个元素的位置,
后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了。

案例3 :根据数组对象中的id作比较,id相同的去掉。这种方法只会保留 id 第一个出现的数组

var arr = [
    {id: 1, name: 'sli', year: 2012},
    {id: 2, name: 'ap', year: 2015},
    {id: 1, name: 'alslion', year: 2012},
    {id: 3, name: 'pose', year: 2012},
]
//删除arr中的重复对象
var newArr= [];
var arrId = [];
for(var item of arr){
    if(arrId.indexOf(item['id']) == -1){
        arrId.push(item['id']);
        newArr.push(item);
    }
}
console.log(arrId,newArr);

案例 4 :数组对象完全相同的去除

	function delObj(obj) {
         var uniques = [];
         var stringify = {};
         for (var i = 0; i < obj.length; i++) {
             var keys = Object.keys(obj[i]);
             keys.sort(function(a, b) {
                 return (Number(a) - Number(b));
             });
             var str = '';
             for (var j = 0; j < keys.length; j++) {
                 str += JSON.stringify(keys[j]);
                 str += JSON.stringify(obj[i][keys[j]]);
             }
             if (!stringify.hasOwnProperty(str)) {
                 uniques.push(obj[i]);
                 stringify[str] = true;
             }
         }
         uniques = uniques;
         return uniques;
     }
     var arr = [
         {name:'uzi',color:'blue'},
         {name:'pdd',color:'white'},
         {name:'mlxg',color:'orange'},
         {name:'uzi',color:'blue'},
     ]
     console.log('arr:',delObj(arr))
	var arr1 = [
         {name:'uzi',color:'blue'},
         {name:'pdd',color:'white'},
         {name:'mlxg',color:'orange'},
         {name:'uzi',color:'red'},
     ]
     console.log('arr1:',delObj(arr1))

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lzfengquan/article/details/126391070
今日推荐