js对比两个数组 (根据arrayA的元素,在arrayB中进行查找)

arrayB的数组是根据arrayA来的,所以肯定是遍历arrayA,然后再根据arrayA的元素,在arrayB中进行查找。如果有找到记录就添加进去,没有就添加{key:'a',num1:'0',num2:'0',num3:'0',tot':0'}。下面看代码

var arrayA = ['b','c'];
var arrayB = [{
    key:'a',
    num1:'1',
    num2:'2',
    num3:'3',
    tot:'6'
},{
    key:'b',
    num1:'11',
    num2:'22',
    num3:'33',
    tot:'66'
},{
    key: 'c',
    num1: '111',
    num2: '222',
    num3: '333',
    tot:666
}];
//准备临时数组
var result=[],arr;
//遍历
for(var i=0;i

运行一下,结果正确

js对比两个数组 (根据arrayA的元素,在arrayB中进行查找)_第1张图片

但是这样肯定是不完美的,没法复用。下面用个方法封装一下。

function compareArr(arr1,arr2){
    //准备临时数组
    var result=[],arr;
    //遍历
    for(var i=0;i

js对比两个数组 (根据arrayA的元素,在arrayB中进行查找)_第2张图片

代码或许会觉得有点不优雅,那就用es6优雅一点,原理是一样,遍历arrayA,根据arrayA的查找arrayB

function compareArr(arr1, arr2) {
    return arr1.map(item1 => {
        //如果arr2.find(item2 => item2.key === item1),有查找到记录就返回记录,否则就返回{ key: item1, num1: '0', num2: '0', num3: '0', tot: '0' }
        return arr2.find(item2 => item2.key === item1)||{ key: item1, num1: '0', num2: '0', num3: '0', tot: '0' }
    })
}    

你可能感兴趣的:(数组方法)