常见JS处理数据

208 阅读1分钟

(一)js去除数组对象中的重复对象

1、根据数组对象中的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);

结果如下

 第二种:reduce()

var arr = [
    {name:'uzi',color:'blue'},
    {name:'pdd',color:'white'},
    {name:'mlxg',color:'orange'},
    {name:'uzi',color:'red'},
]

let hash = {};
var newArr = arr.reduce((item, next) => {
    hash[next.name] ? '' : hash[next.name] = true && item.push(next);
    return item
}, []);
console.log(newArr);

第三种:

let arr = [
    {name:'黎明',id:21111},
    {name:'王小二',id:1111},
    {name:'大小二',id:3222}
]

arr.splice(arr.findIndex(item => item.id === 3222), 1); 

2、密码正则表达式

根据网络安全隐患管理规定,需要对密码进行强度管理,不允许有弱口令的存在。

强口令的要求为:

1、长度至少为8位数。2、大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符,

每类字符至少包含一个。

3、把对象中的componentId的对应 componentName

const datalist=[
    {
        componentId:'1',
    },
{
        componentId:'2',
    },
{
        componentId:'3',
    }
]

item.componentName={
    "1":“待办”,
    "2":"日程"
}[item.componentId]

打印出来的数据:
datalist=[
    {
        componentId:'1',
        componentName:'待办'
    },
    {        componentId:'2',
        componentName:'日程'
    },
]





<div  :style="{ color: isTemplate === true ? '' : '#A7B1C7' }"></div>

三、找到两个数组对比后的所在原数组的索引值

把数组勇逗号分隔

findSaneElements(arr1,arr2){
    let sameElements=[]
    for(let i=0;i<arr1.length;i++){
        for(j=0;j<arr2.length;j++){
            if(arr1[i].id===arr2[j].id){
                sameElements.push(i+1)
            }
            
        }
    }
    return sameElments;
}

let findIndexArr=findSaneElements(arr1,arr2)
把数组用逗号分隔
let newArr=findIndexArr.join(',')

四、只能输入正整数并且长度5位

const regx=/^[1-9]\d{0,4}$/ //使用正则表达式限制只能输入正整数,并且长度为5位

五、匹配非负的小数点后6位