Javascript for循环的正确实现

Javascript for循环的正确实现,javascript,arrays,web-sql,Javascript,Arrays,Web Sql,我需要对a10和g10重复下面的步骤。因此,理论上我可以继续如下,并以大量的重复结束,但我知道这是可怕的做法。什么是最好的简化方法 function enterall() { var a1 = localStorage.getItem('a1'); var b1 = localStorage.getItem('b1'); var c1 = localStorage.getItem('c1'); var d1 = localStorage

我需要对a10和g10重复下面的步骤。因此,理论上我可以继续如下,并以大量的重复结束,但我知道这是可怕的做法。什么是最好的简化方法

function enterall() {


    var a1 =    localStorage.getItem('a1');
    var b1 =    localStorage.getItem('b1');
    var c1 =    localStorage.getItem('c1');
    var d1 =    localStorage.getItem('d1');
    var e1 =    localStorage.getItem('e1');
    var f1 =    localStorage.getItem('f1');
    var g1 =    localStorage.getItem('g1');

    var a2 =    localStorage.getItem('a2');
    var b2 =    localStorage.getItem('b2');
    var c2 =    localStorage.getItem('c2');
    var d2 =    localStorage.getItem('d2');
    var e2 =    localStorage.getItem('e2');
    var f2 =    localStorage.getItem('f2');
    var g2 =    localStorage.getItem('g2');



db.transaction(function (tx) {

               tx.executeSql("INSERT INTO mytable (id, item, code, val, val2, val3, val4) VALUES (?,?,?,?,?,?,?)", [a1, b1, c1, d1, e1, f1, g1], function (tx, results){

                             alert('records in');

                             });
              });


db.transaction(function (tx) {

               tx.executeSql("INSERT INTO mytable (id, item, code, val, val2, val3, val4) VALUES (?,?,?,?,?,?,?)", [a2, b2, c2, d2, e2, f2, g2], function (tx, results){

                             alert('records in');

                             });
              });
};

试着这样做:

var results = {'first': [], 'second': []};
var letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];

for (var i = 0; i < 7; i++) {
    results['first'].push(localStorage.getItem(letters[i] + '1'));
    results['second'].push(localStorage.getItem(letters[i] + '2'));
}
var results={'first':[],'second':[]};
变量字母=['a','b','c','d','e','f','g'];
对于(变量i=0;i<7;i++){
结果['first'].push(localStorage.getItem(字母[i]+'1');
结果['second'].push(localStorage.getItem(字母[i]+'2'));
}

您可能应该使用嵌套for循环和数组来包含您的值:

var values = new Object();
var letters = ["a", "b", "c", "d", "e", "f", "g"];

letters.forEach(function(letter) {
    for (var i = 1; i <= 10; i++) {
        values[letter + i] = localStorage.getItem(letter + i);
    }
});
var值=新对象();
变量字母=[“a”、“b”、“c”、“d”、“e”、“f”、“g”];
字母。forEach(函数(字母){

对于(var i=1;i除了前面的答案之外,我还建议对db.transaction函数使用一个循环。这两个函数最好作为单独的函数,从enterall()中调用函数。我的另一个建议是,在添加到本地存储和取出它们时,将它们放入对象中,以使代码更干净。

如果不想创建数组,也可以使用以下方法:

for(var num=1; num <= 10; num++) {
    var arr = [];
    for(var letter = 'a'.charCodeAt(0); letter <= 'g'.charCodeAt(0); letter ++) {
        arr.push(localStorage.getItem(String.fromCharCode(letter) + num));
    }
    db.transaction(function (tx) {
        tx.executeSql("INSERT INTO mytable (id, item, code, val, val2, val3, val4) VALUES (?,?,?,?,?,?,?)", arr, function (tx, results){
            alert('records in');
        });
    });
}

用于(var num=1;num OP的数字仅上升到2@rednaw这是因为OP想要一个防止代码重复的解决方案。他解释说,他想继续到10,但不想继续沿着他所拥有的每一个变量提取需要1行的路径。我已经试过了,但当我在控制台中运行并检查时,它告诉我
未定义?@OliverJ90我已经用
的显式初始化更新了我的答案。它现在应该可以工作了。@Freeasinber这似乎需要
字母才能开始:)谢谢你的帮助。嗯,是的,使用两个循环。你尝试过什么吗?请告诉我们你的尝试。