如何基于JavaScript中的另一个数组比较和更新此数组?
我正在免费的CodeCamp.com上做这个 挑战指出: 将存储在二维数组中的资源清册与第二个资源清册进行比较和更新 新交付的2D阵列。更新当前的现有库存 项目数量(以arr1为单位)。如果找不到项目,请添加新项目 将物料和数量输入到库存数组中。退回的存货 数组应按项目按字母顺序排列 当我尝试时:如何基于JavaScript中的另一个数组比较和更新此数组?,javascript,arrays,Javascript,Arrays,我正在免费的CodeCamp.com上做这个 挑战指出: 将存储在二维数组中的资源清册与第二个资源清册进行比较和更新 新交付的2D阵列。更新当前的现有库存 项目数量(以arr1为单位)。如果找不到项目,请添加新项目 将物料和数量输入到库存数组中。退回的存货 数组应按项目按字母顺序排列 当我尝试时: updateInventory([[21, "Bowling Ball"], [2, "Dirty Sock"], [1, "Hair Pin"], [5, "Microphone"]], [[2,
updateInventory([[21, "Bowling Ball"], [2, "Dirty Sock"],
[1, "Hair Pin"], [5, "Microphone"]], [[2, "Hair Pin"],
[3, "Half-Eaten Apple"], [67, "Bowling Ball"],
[7, "Toothpaste"]]).length // I get 8 instead of 6
updateInventory([[21, "Bowling Ball"], [2, "Dirty Sock"],
[1, "Hair Pin"], [5, "Microphone"]], [[2, "Hair Pin"],
[3, "Half-Eaten Apple"], [67, "Bowling Ball"],
[7, "Toothpaste"]])
我得到:
当我应该得到:
[[88, "Bowling Ball"], [2, "Dirty Sock"], [3, "Hair Pin"],
[3, "Half-Eaten Apple"], [5, "Microphone"], [7, "Toothpaste"]]
我相信这就是我的问题所在
for(var j = 0; j < arr2.length; j++){
var i = arr2[j][1];
for(var k = 0; k < arr1.length; k++){
var idx = arr1.indexOf(i);
if(idx === -1){
arr1.push(i);
}
}
}
for(var j=0;j
因为它有点起作用了。但是有人能帮我按字母顺序排序吗?提前谢谢 试试这个
function updateInventory(arr1, arr2) {
for (var x = 0; x < arr1.length; x++) {
for (var y = 0; y < arr2.length; y++) {
if (arr1[x][1] === arr2[y][1]) {
arr1[x][0] = arr2[y][0] + arr1[x][0];
}
}
}
for (var j = 0; j < arr2.length; j++) {
var i = arr2[j][1];
var found = 0;
for (var k = 0; k < arr1.length; k++) {
if (arr1[k][1] === arr2[j][1]){
found = 1;}
}
if (found == 0)
arr1.push(arr2[j]);
}
arr1.sort(compareSecondColumn);
return arr1;
}
函数更新Inventory(arr1、arr2){
对于(变量x=0;x
用于分类
function compareSecondColumn(a, b) {
if (a[1] === b[1]) {
return 0;
}
else {
return (a[1] < b[1]) ? -1 : 1;
}
}
函数比较第二列(a、b){
如果(a[1]==b[1]){
返回0;
}
否则{
返回(a[1]
试试这个
function updateInventory(arr1, arr2) {
for (var x = 0; x < arr1.length; x++) {
for (var y = 0; y < arr2.length; y++) {
if (arr1[x][1] === arr2[y][1]) {
arr1[x][0] = arr2[y][0] + arr1[x][0];
}
}
}
for (var j = 0; j < arr2.length; j++) {
var i = arr2[j][1];
var found = 0;
for (var k = 0; k < arr1.length; k++) {
if (arr1[k][1] === arr2[j][1]){
found = 1;}
}
if (found == 0)
arr1.push(arr2[j]);
}
arr1.sort(compareSecondColumn);
return arr1;
}
函数更新Inventory(arr1、arr2){
对于(变量x=0;x
用于分类
function compareSecondColumn(a, b) {
if (a[1] === b[1]) {
return 0;
}
else {
return (a[1] < b[1]) ? -1 : 1;
}
}
函数比较第二列(a、b){
如果(a[1]==b[1]){
返回0;
}
否则{
返回(a[1]
您可以使用使事情更容易理解。在我的示例中,我确信您可以组合所有函数,而不是更改oldValues
数组
var oldValues = [[21, "Bowling Ball"], [2, "Dirty Sock"],
[1, "Hair Pin"], [5, "Microphone"]];
var newValues = [[2, "Hair Pin"],
[3, "Half-Eaten Apple"], [67, "Bowling Ball"],
[7, "Toothpaste"]];
newValues.forEach(function(nArr) {
var i = 0;
for(i; i < oldValues.length; i++) {
if(oldValues[i][1] === nArr[1]) {
oldValues[i] = nArr;
return;
}
}
oldValues.push(nArr);
});
oldValues.sort(function (ov, nv) {
return ov[1] > nv[1];
}).forEach(function (v) {
console.debug(v);
$('#test').append('<li>[' + v[0] + ', ' + v[1] + ']</li>');
});
var oldValues=[[21,“保龄球”],[2,“脏袜子”],
[1,“发夹”],[5,“话筒”];
var newValues=[[2,“发夹”],
[3,“吃了一半的苹果”],[67,“保龄球”],
[7,“牙膏”];
forEach(函数(nArr){
var i=0;
对于(i;inv[1];
}).forEach(功能(v){
控制台调试(v);
$('#test')。追加('['+v[0]+','+v[1]+'] ');
});
您可以使用使事情更容易理解。在我的示例中,我确信您可以组合所有函数,而不是更改oldValues
数组
var oldValues = [[21, "Bowling Ball"], [2, "Dirty Sock"],
[1, "Hair Pin"], [5, "Microphone"]];
var newValues = [[2, "Hair Pin"],
[3, "Half-Eaten Apple"], [67, "Bowling Ball"],
[7, "Toothpaste"]];
newValues.forEach(function(nArr) {
var i = 0;
for(i; i < oldValues.length; i++) {
if(oldValues[i][1] === nArr[1]) {
oldValues[i] = nArr;
return;
}
}
oldValues.push(nArr);
});
oldValues.sort(function (ov, nv) {
return ov[1] > nv[1];
}).forEach(function (v) {
console.debug(v);
$('#test').append('<li>[' + v[0] + ', ' + v[1] + ']</li>');
});
var oldValues=[[21,“保龄球”],[2,“脏袜子”],
[1,“发夹”],[5,“话筒”];
var newValues=[[2,“发夹”],
[3,“吃了一半的苹果”],[67,“保龄球”],
[7,“牙膏”];
forEach(函数(nArr){
var i=0;
对于(i;inv[1];
}).forEach(功能(v){
控制台调试(v);
$('#test')。追加('['+v[0]+','+v[1]+'] ');
});
你也可以这样做,我知道问题已经解决了,但我只是想试一试
Array.prototype.concatAll=function(){
var结果=[];
this.forEach(函数(子数组){
子数组.forEach(函数(项){
结果:推送(项目);
});
});
返回结果;
};
函数updateInventory(arr1、arr2){
arr1.forEach(功能(项目){
对于(变量i=0;ib[1])?1:((b[1]>a[1])?-1:0);
});
警报(arr1);
返回arr1;
}
//库存清单示例
var curInv=[
[21,“保龄球”],
[2,“脏袜子”],
[1,“发夹”],
[5,“麦克风”]
];
var newInv=[
[2,“发夹”],
[3,“吃了一半的苹果”],
[67,“保龄球”],
[7,“牙膏”]
];
更新库存(curInv、newInv)代码>你也可以这样做,我知道它已经被回答了,但我只是想试一试
Array.prototype.concatAll=function(){
var结果=[];
this.forEach(函数(子数组){
子数组.forEach(函数(项){
结果:推送(项目);
});
});
返回结果;
};
函数updateInventory(arr1、arr2){
arr1.forEach(功能(项目){
对于(变量i=0;ib[1])?1:((b[1]>a[1])?-1:0);
});
警报(arr1);
返回arr1;
}
//库存清单示例
库林瓦