代码之家  ›  专栏  ›  技术社区  ›  Arda Xi

尝试在javascript中加入二维数组

  •  11
  • Arda Xi  · 技术社区  · 15 年前

    我试图将二维数组转换为字符串,以便将其存储在本地存储数组中。但是,此代码有问题,我无法识别:

    for(x in array) {
        if(array[x] instanceof Array) {
            array[x] = array[x].join("`");
        }
    }
    var string = array.join("@");
    localStorage[key] = string;
    

    有人知道我做错了什么吗?

    至于怎么了,我说的多维数组是指数组[0][1]等。 当输入到localstorage时,所有的“string”都被简化为@,这意味着@的另一面仍然有数组。

    5 回复  |  直到 8 年前
        1
  •  5
  •   Roland Bouman    15 年前

    出了什么问题?当然,你可以说你的输入是什么,你期望的是什么,不期望的输出是什么?

    至少,如果 array 确实是一个数组,不应使用 for..in loop . 那是给物体的。只使用一个

    for (var i=0, l=array.length; i<l; i++){
        if (array[i] instanceof Array){
            array[i] = array[i].join("`");
        }
    }
    
        2
  •  10
  •   Jonatas Walker    8 年前

    现在这很简单:

    [[1,2],[3,4]].map(e => e.join(':')).join(';'); // 1:2;3:4
    
        3
  •  1
  •   Mark Byers    15 年前

    javascript没有二维数组。它只有参差不齐的阵列。您的代码适用于适当的输入:

    array = [[1,2],[3,4]];
    for(x in array) {
        if(array[x] instanceof Array) {
            array[x] = array[x].join("`");
        }
    }
    var string = array.join("@");
    alert(string);
    

    输出:

    1`2@3`4
    

    你能告诉我们你使用的是什么输入,你得到的是什么输出吗?

        4
  •  1
  •   Sumner Evans Cirec Beback    9 年前

    JSON 现在是现代浏览器的标准配置。您可以使用它来“字符串化”(转换为JSON字符串)和“解析”从JSON字符串转换。

    你可以使用 JSON.stringify 函数将二维数组转换为JSON并将其插入 localStorage . 然后你可以用 JSON.parse 将其转换回数组。

    var my2DArray = [[1, 2, 3], [4, 5, 6]];
    var stringified = JSON.stringify(my2DArray);
    localStorage[key] = stringified;
    
    var backToOriginal = JSON.parse(localStorage[key]);
    
        5
  •  0
  •   James Maroney    15 年前

    在火狐中测试,您的代码对我来说似乎很好。

    在特定的浏览器中失败了吗?

    var array = [
    ["a","b"],
    ["c","d","e"]];
    for(x in array) {
        if(array[x] instanceof Array) {
            array[x] = array[x].join("`");
        }
    }
    var string = array.join("@");
    console.log(string);