我需要多维数组或对象的帮助。
这是我的代码:
let Calcoli = {};
$(document).ready(function() {
add_array("Home", '+', 15, "");
add_array("Car", '+', 15, "");
add_array("Music", '+', 40, 0);
add_array("Music", '+', 50, 1);
debug_obj(Calcoli);
});
function add_array(keys, op, value, i) {
if (i != ""){
if (isNaN(Calcoli[keys][i])) {
Calcoli[keys] = [];
Calcoli[keys][i] = 0;
}
if (op == "+") {
Calcoli[keys][i] += value;
}
} else {
if (op == "+") {
Calcoli[keys] += value;
}
}
}
function debug_obj(item) {
console.log(item);
}
结果是:
{"Home":30,"Car":15,"Music":[null,50]}
我需要
{"Home":30,"Car":15,"Music":[40,50]} –
答案 0 :(得分:0)
这里有两个问题:
else
案例中的值,因此您要添加未定义的数字,获取NaN
if (i != 0)
实际上会在i == ""
时失败,因为它们都是“假的”并且会比较为等。在需要时初始化所有对象,以类型安全的方式检查您的值,并跳过一些if
s ...
let Calcoli = {};
add_array("Home", '+', 15, "");
add_array("Car", '+', 15, "");
add_array("Music", '+', 40, 0);
add_array("Music", '+', 50, 1);
debug_obj(Calcoli);
function add_array(keys, op, value, i) {
if (i !== "") {
Calcoli[keys] = Calcoli[keys] || []
Calcoli[keys][i] = Calcoli[keys][i] || 0
if (op == "+") {
Calcoli[keys][i] += value;
}
} else {
Calcoli[keys] = Calcoli[keys] || 0
if (op == "+") {
Calcoli[keys] += value;
}
}
}
function debug_obj(item) {
console.log(item);
}