【问题标题】:How to build a simple string from a multidimensional array?如何从多维数组构建一个简单的字符串?
【发布时间】:2013-08-24 05:54:48
【问题描述】:

基本上,我有一个多维数组,我需要将它构建成一个简单的字符串。

这是一个很简单的问题,虽然它已经困扰我很长一段时间了,因为我似乎无法确定它。

下面是一个示例,说明我的数组仅包含 3 个问题:

[["question1","answer1","answer2","answer3","answer4"],["question2","answer1","answer2","answer3","answer4"],["question3","answer1","answer2","answer3","answer4"]]

例如,D.rows[0][0] 将是“question1”,D.rows[2][3] 将是“answer3”,只是为了澄清。

下面是它必须如何保存到字符串中:

question1,answer1,answer2,answer3,answer4 
question2,answer1,answer2,answer3,answer4 
question3,answer1,answer2,answer3,answer4 

每个元素之间必须有逗号,每个问题必须用换行符分隔。

这是我目前无法使用的:

var fullString;
for (i = 0; i < csvArray.length; ++i) 
{
    second = secondArray[i];
    for (j = 0; j < second.length; ++j) 
    {
        fullString += entry[j] + "'";
    }
    fullString += "\n";
}

提前致谢!

【问题讨论】:

    标签: javascript for-loop multidimensional-array


    【解决方案1】:

    试试这个

    var s,a=[["question1","answer1","answer2","answer3","answer4"],"question2","answer1","answer2","answer3","answer4"],["question3","answer1","answer2","answer3","answer4"]];
    for(i=0; i < a.length; i++){
        s=(s)?s+"\n\r"+a[i].join():a[i].join();
    }
    

    jsfiddle example

    在你自己的例子中:因为你要直接添加到fullString,它应该有一个空字符串作为值,否则你会在开头得到undefined

    var fullString="";
    

    这部分second = secondArray[i];应该是

    var second = csvArray[i];
    

    同样,fullString += entry[j] + "'"; 应该是

    fullString += second[j] + ",";
    

    【讨论】:

    • @fizzix - 在 ecma 脚本规范中未指定 for in 循环中的迭代顺序 - 结果可能在不同的浏览器中有所不同,如果你在 ES3 中添加到数组原型,你也会得到 - 使用for(i=0; i
    • 感谢@magyar1984 的通知,现在已经使用 ES5 一段时间了,并且倾向于忘记一些差异 ^^。但就我个人而言,我什至建议使用 spy-js 给出的答案
    【解决方案2】:

    一个班轮:

    var result = [["question1","answer1","answer2","answer3","answer4"],["question2","answer1","answer2","answer3","answer4"],["question3","answer1","answer2","answer3","answer4"]].join('\r\n');

    【讨论】:

      【解决方案3】:

      类似这样的:

      var questionAnswerSet= { "question1" : [
      {“答案1”:“价值”, “answer2”:“价值”, “answer3”:价值} ],
      “问题2”:[
      {“答案1”:“价值”, “answer2”:“价值”, “answer3”:价值} ], }

      并像这样访问:

      questionAnswerSet[0].answer2 // 问题一答案2

      questionAnswerSet[1].answer2 // 问题二答案2

      【讨论】:

      • 抱歉,这完全没有意义吗?我相信我需要一个双循环来遍历数组中的每个元素。
      • 我的数组可以有任意数量的条目吗?而且元素总是不同的......
      【解决方案4】:
      for (var i=0; i<yourArray.length; i++) { // iterate on the array
         var obj = yourArray[i];
         for (var key in obj) { // iterate on object properties
            var value = obj[key];
            console.log(value);
         }
      }
      

      【讨论】:

        【解决方案5】:

        如果你有这样的数组...

        var arr = [["question1","answer1","answer2","answer3","answer4"],["question2","answer1","answer2","answer3","answer4"],["question3","answer1","answer2","answer3","answer4"]];
        

        那么……

        var strArr  =  arr.join(',');
        var strLine =  arr.join('\n'); // string with line breaks.
        

        会为你做的。

        如果您希望每个问答块使用不同的字符串,那么...

        var strJoinArr = [], strJoinLines = '';
        for(var i = 0; i < arr.length; i++){
            strJoinArr.push(arr[i].join(','));
            strJoinLines += arr[i].join(',')+ '\n'; // string with line break
        }
        

        然后要访问每个部分,您可以使用索引,

        例如,strJoinArr[2] 将返回 'question3,answer1,answer2,answer3,answer4'

        更多关于.join() 更多关于.push()

        【讨论】:

        • 如何添加换行符?
        【解决方案6】:

        如果您打算更改分隔符或答案数量,这可能是您的解决方案。

        var array = [["question1","answer1","answer2","answer3","answer4"],["question2","answer1","answer2","answer3","answer4"],["question3","answer1","answer2","answer3","answer4"]],
        string = "";
        
        for (var i = 0; i <= array.length - 1; i++) {
             string +=array[i].join(', ');
             string += "\n";
        }
        

        此外,对于这种结构的任何对象,以不太可读但有效的方式

        string = array.join('\r\n');
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-07
          • 1970-01-01
          • 1970-01-01
          • 2023-03-18
          • 2014-09-24
          • 2022-04-07
          • 2016-09-28
          • 1970-01-01
          相关资源
          最近更新 更多