给定一个包含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”
答案 0 :(得分:2)
您可以像这样使用.map()
和.join()
:
let str = arrayStd.map(a => a.join(":")).join("; ");
<强>演示:强>
let arrayStd = [["G14", 18], ["G16", 17], ["G16", 17], ["G13", 17]];
let str = arrayStd.map(a => a.join(":")).join("; ");
console.log(str);
&#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)
您可以使用地图功能,并加入生成的数组。
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;
答案 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);