我有一个看起来像这样的数组:
var array = ["Rock Paper,Shoot,Dulce", "Once,Apple Mic,Chairs"]
我想返回这样的结果:
'Rock Paper','Shoot','Dulce','Once','Apple Mic','Chairs'
这是我到目前为止所做的:
includes = tagsI.map(tag => `'${tag}'`).join(',')
但这只用逗号和单引号分隔值......而不是值的值。
我该怎么做?
谢谢
将数组的项连接到带有逗号的单个字符串中。用逗号分隔符拆分字符串,将项目映射到所需的格式,然后用逗号再次连接。
const array = ["Rock Paper,Shoot,Dulce", "Once,Apple Mic,Chairs"]
const result = array
.join(',')
.split(',')
.map(tag => `'${tag}'`)
.join(',');
console.log(result);
用逗号分隔tag
并使用另一个地图
var tagsI = ["Rock Paper,Shoot,Dulce", "Once,Apple Mic,Chairs"]
var result = tagsI.map(tag => tag.split(',').map(tag => `'${tag}'`)).join(',');
console.log(result)
如何使用reduce:
var array = ["Rock Paper,Shoot,Dulce", "Once,Apple Mic,Chairs"];
//V1 : compatible with all browsers
var result = array.reduce((acc, elem, index, arr)=>{
var n_arr = elem.split(",").map(map_elem=> `'${map_elem}'`);
n_arr.forEach(fe_elem => acc.push(fe_elem));
return acc;
}, []).join(",");
console.log(result);
document.querySelector("#res1").innerHTML = result;
//V2: compatible with some browsers
var result2 = array.reduce((acc, elem, index, arr)=>{
var n_arr = elem.split(",").map(map_elem=>`'${map_elem}'`);
acc.push(...n_arr);
return acc;
}, []).join(",");
console.log(result2)
document.querySelector("#res2").innerHTML = result2;
<body>
<p id="res1"></p>
<p id="res2"></p>
</body>
原理如下:
-
我们有一个初始的数组"数组",其中我们存储了字符串(["Rock Paper,Shoot,Dulce","Once,Apple Mic,Chairs"](
-
对于数组中的每个字符串:
- 我们将所述字符串拆分为一个数组,">
- 我们用引号将这个数组的每个元素括起来
- 我们将这些元素中的每一个添加到将用作结果变量的数组中
- 我们创建了一个由 "," 连接的字符串
PS:如果你想要一个数组而不是一个字符串,只需删除join(",")
您首先需要拆分数组中的每个元素。
var array = ["Rock Paper,Shoot,Dulce", "Once,Apple Mic,Chairs"];
var split = array.map(v => v.split(","));
var flattened = [].concat.apply([], split);
var str = flattened.join(",");