如何在Javascript中基于另一个数组获取多个数组值

时间:2016-06-09 08:17:49

标签: javascript arrays

我不知道我的问题必须是什么标题,我认为这很复杂。所以,我有一个数组:

["87080207", "87101133", "91140156"]

和B阵列:

 ["97150575", "97150575", "90141063"]

这个B数组,我输入了html select值。它们中的每一个(A和B阵列)都是相关的。当我选择值87080207,87101133(B数组)时,我需要显示97150575(数组)。
我试过了,但它没有用。这是我的代码:

var a=[];
var b=[];
var arrayLength = dataComponentValuation.length;
for (var i = 0; i < arrayLength; i++) {
   a.push(dataComponentValuation[i].valuated);
   b.push(dataComponentValuation[i].valuator);
}
var ajoin = a.join();
var bjoin = b.join();
$('#valuatedEmpCompId_before').val(ajoin);
$('#valuator_before').val(bjoin);

select中,我放了一个函数,就是这样:

function emptyValuated() {
    var valby = $("#valBy").val(); //chosen value from select
    var b_valby = $("#valuator_before").val();

    var b_valuated = $("#valuatedEmpCompId_before").val();
    if(b_valby != ''){
        if(valby != b_valby)
        {
            $("#valuatedEmpCompId").val('');
        }
        else{            
             $("#valuatedEmpCompId").val(b_valuated);
        }

    }
    else{      

        $("#valuator_before").val(valby);
        $("#valuatedEmpCompId").val(b_valuated);
    }
}

请帮帮我......

2 个答案:

答案 0 :(得分:1)

根据建议,您可以使用对象作为对数组A的值的引用。

var arrayA = ["87080207", "87101133", "91140156"],
    arrayB = ["97150575", "97150575", "90141063"],
    object = Object.create(null);

arrayB.forEach(function (b, i) {
    object[b] = object[b] || [];
    object[b].push(arrayA[i]);
});

console.log(object);

答案 1 :(得分:0)

我想现在Map对象是这些工作的完美解决方案。

var arrayA = ["87080207", "87101133", "91140156"],
    arrayB = ["97150575", "97150575", "90141063"],
     myMap = arrayB.reduce((p,c,i) => p.has(c) ? p.set(c, p.get(c).concat(arrayA[i]))
                                               : p.set(c,[arrayA[i]])
                                               , new Map());
console.log(myMap.get("97150575"));
console.log(myMap.get("90141063"));