将数组数组转换为字符串?

时间:2018-05-04 12:34:07

标签: javascript arrays string

给定一个包含2个val的数组:

var arrayStd = [["G14",18],["G16",17],["G16",17],["G13",17]];

我目前使用此或其变体:

var arrayStd = [["G14",18],["G16",17],["G16",17],["G13",17]];

var arrayToString = function(array){ 
  var str;
  array.map(function(a) {
    var item = a[0]+":"+a[1];
    str = str? str+'; '+item : item;
    } 
  );
return str
}
var str = arrayToString(arrayStd);
console.log(JSON.stringify(str));

var arrayStd = [["G14",18],["G16",17],["G16",17],["G13",17]];

var arrayToString = function(array){ 
  return str =  JSON.stringify(array).replace(/\"|\[\[|\]\]/g , "").replace(/\],\[/g , "; ").replace(/,/g , ":");
}
var str = arrayToString(arrayStd);
console.log(JSON.stringify(str));

有没有更明智的方法来获得str =“G14:18; G16:17; G16:17; G13:17”

5 个答案:

答案 0 :(得分:2)

您可以像这样使用.map().join()

let str = arrayStd.map(a => a.join(":")).join("; ");

<强>演示:

&#13;
&#13;
let arrayStd = [["G14", 18], ["G16", 17], ["G16", 17], ["G13", 17]];

let str = arrayStd.map(a => a.join(":")).join("; ");

console.log(str);
&#13;
&#13;
&#13;

答案 1 :(得分:2)

对代码进行渐进式改进......

您应该使用.forEach()代替.map(),因为您没有返回任何内容。

var arrayStd = [
  ["G14", 18],
  ["G16", 17],
  ["G16", 17],
  ["G13", 17]
];

var arrayToString = function(array) {
  var str = "";
  array.forEach(function(a) {
    var item = a[0] + ":" + a[1];
    str = str ? str + '; ' + item : item;
  });
  return str
}
var str = arrayToString(arrayStd);
console.log(JSON.stringify(str));

但是,.map()在这里实际上用于将每个内部数组映射到一个字符串,然后获取新的字符串数组并加入它们。

var arrayStd = [
  ["G14", 18],
  ["G16", 17],
  ["G16", 17],
  ["G13", 17]
];

var arrayToString = function(array) {
  var str = array.map(function(a) {
    return a[0] + ":" + a[1];
  }).join("; ");

  return str
}
var str = arrayToString(arrayStd);
console.log(JSON.stringify(str));

您也可以在内部数组上使用.join(),并可以通过立即返回结果来删除str变量。

var arrayStd = [
  ["G14", 18],
  ["G16", 17],
  ["G16", 17],
  ["G13", 17]
];

var arrayToString = function(array) {
  return array.map(function(a) {
    return a.join(":");
  }).join("; ");
}
var str = arrayToString(arrayStd);
console.log(JSON.stringify(str));

最后,在现代环境中,您可以将函数转换为“箭头函数”,以获得更简洁的语法。

const arrayStd = [
  ["G14", 18],
  ["G16", 17],
  ["G16", 17],
  ["G13", 17]
];

const arrayToString = array => array.map(a => a.join(":")).join("; ")

var str = arrayToString(arrayStd);
console.log(JSON.stringify(str));

我还将var更改为const,这对于您不会修改的变量是一个好主意。

答案 2 :(得分:1)

受到之前建议的启发,但比其他建议更短,更易读:

var arrayStd = [["G14",18],["G16",17],["G16",17],["G13",17]];

var arrayToString = function(array){ 
  return array.join("; ").replace(/,/g,":")
}
console.log(arrayToString(arrayStd));

答案 3 :(得分:0)

您可以使用地图功能,并加入生成的数组。

&#13;
&#13;
let arrayStd = [["G14",18],["G16",17],["G16",17],["G13",17]];
//"G14:18; G16:17; G16:17; G13:17"

let arrayNew = arrayStd.map((elem,i) => `${i!==0?'; ':''}${elem[0]}:${elem[1]}`).join("");
console.log(arrayNew);
&#13;
&#13;
&#13;

答案 4 :(得分:0)

let arrayStd = [["G14",18],["G16",17],["G16",17],["G13",17]];
//"G14:18; G16:17; G16:17; G13:17"

let arrayNew = arrayStd.map((elem,i) => `${i!==0?'; 
':''}${elem[0]}:${elem[1]}`).join("");
console.log(arrayNew);