每个人我都试图找到比较两个数组的最佳方法,并添加一个值为0的新元素,如果它们之间存在任何差异。首先我得到了这两个阵列:
var niv = ["FB","Bach","FPSE","FPPE","AA"];
var values = [["H", "FB", 3286.25, 509.75],["H", "Bach", 4587.5, 522.5],
["H", "FPPE", 160, 2624],["H", "AA", 334, 7454],
["M", "FB", 3803.75, 1743.25],["M", "Bach", 7856.5, 709.5],
["M", "FPPE", 799, 3785],["M", "AA", 1055, 11718,2],["N", "FB", 45, 0.0, 0.0]];
这是我尝试做的一个不好的例子:
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < values.length; j++) {
if (data[i][0] == values[j][0] &&
(values[i][1] == "FB" || values[i][1] == "Bach" ||
values[i][1] == "FPSE" || values[i][1] == "FPPE" || values[i][1] == "AA")) {
data[i].push(values[j][2],values[j][3])
} else {
data[i].push(0,0)
}
}
}
我想要的就是:
[["H", "FB", 3286.25, 509.75],["H", "Bach", 4587.5, 522.5],
["H", "FPSE", 0.0, 0.0],["H", "FPPE", 160, 2624],
["H", "AA", 334, 7454],["M", "FB", 3803.75, 1743.25],["M", "Bach", 7856.5, 709.5],
["M", "FPSE", 0.0, 0.0],["M", "FPPE", 799, 3785],
["M", "AA", 1055, 11718,2],["N", "FB", 45, 0.0],["N", "Bach", 0.0, 0.0],
["N", "FPSE", 0.0, 0.0],["N", "FPPE", 0.0, 0.0],["N", "AA", 0.0, 0.0]];
答案 0 :(得分:0)
我希望我不迟到。
我认为你应该把工作分成几个部分,这样才能达到目标。
从具有以下信息的两个数组开始:niv和值
var niv = ["FB","Bach","FPSE","FPPE","AA"];
var values = [["H", "FB", 3286.25, 509.75],["H", "Bach", 4587.5, 522.5],
["H", "FPPE", 160, 2624],["H", "AA", 334, 7454],
["M", "FB", 3803.75, 1743.25],["M", "Bach", 7856.5, 709.5],
["M", "FPPE", 799, 3785],["M", "AA", 1055, 11718,2],["N", "FB", 45, 0.0, 0.0]];
我建议将数组值分成 3个数组,一个用于H,另一个用于M,另一个用于N.
var man = [];
var wom = [];
var unk = [];
for (var i = 0; i < values.length; i++){
if (values[i][0] == "H") man.push(values[i]);
if (values[i][0] == "M") wom.push(values[i]);
if (values[i][0] == "N") unk.push(values[i]);
}
然后,这是一个通过数组并检查值是否对应于数组niv的问题。为了验证这一点,我建议您创建一个函数,它接收一个数组和一个字符串,其中包含搜索,如果找到与否,则返回true或false 。< / p>
知道是否,您可以在数组中添加新元素。使用 splice 方法,元素将添加到应该位于的位置。有了这个,你将有3个完整和有序的数组。
for (var i = 0; i < niv.length; i++){
if(!checkArray(man,niv[i])){
man.splice(i,0,["H",niv[i],0,0]);
}
}
for (var i = 0; i < niv.length; i++){
if(!checkArray(wom,niv[i])){
wom.splice(i,0,["M",niv[i],0,0]);
}
}
for (var i = 0; i < niv.length; i++){
if(!checkArray(unk,niv[i])){
unk.splice(i,0,["N",niv[i],0,0]);
}
}
function checkArray (array, niv){
for (var i = 0; i < array.length; i++){
if(array[i][1] === niv){
return true;
}
}
return false;
}
我希望我帮助