我有array=[a, b, c, d]
,我想返回带编号的字符串中的元素,例如"1. a, 2. b, 3. c, 4. d"
我尝试使用for
循环使用i
循环返回"i. array[i]"
,但是我只得到返回的数组的第一个元素,而不是整个数组。
const array = ["a", "b", "c", "d"]
for (var i = 0; i < array.length; i++) {
return `The order is currently: ${i+1}. ${array[i]}, `
}
我希望输出为"The order is currently 1. a, 2. b, 3. c, 4. d"
,但实际输出为"1. a,"
答案 0 :(得分:2)
您可以将Array.map()
与模板文字一起使用并加入结果。
map()方法使用调用a的结果创建一个新数组 在调用数组中的每个元素上提供了功能。
该映射会创建一个['1. a', '2. b', etc...]
数组,该数组在加入时会生成请求的字符串。
const array = ["a", "b", "c", "d"]
const result = array.map((c, i) => `${i + 1}. ${c}`).join(', ')
console.log(`The order is currently: ${result}`)
如何修复您的工作?
您需要在每次迭代中累积结果,并删除最后一个字符(多余的,
):
const array = ["a", "b", "c", "d"]
let result = 'The order is currently:'
for (var i = 0; i < array.length; i++) {
result = `${result} ${i+1}. ${array[i]},`
}
console.log(result.slice(0, -1))
答案 1 :(得分:1)
您可以映射所需的部件,并用逗号将其连接起来。
const array = ["a", "b", "c", "d"]
console.log(`The order is currently: ${array.map((v, i) => `${i + 1}. ${v}`).join(', ')}`);
答案 2 :(得分:1)
另一种可能的解决方案是使用Array.reduce(),以与字符串"The order is currently: "
相等的累加器开头,并在每次迭代中添加相关文本。当然,您需要进行一些后期处理才能删除最新的不需要的comma
。
const array = ["a", "b", "c", "d"];
let res = array.reduce(
(str, v, i) => str += `${i+1}. ${v}, `,
"The order is currently: "
)
console.log(res.slice(0, -2));
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
答案 3 :(得分:0)
使用for语句内的return将引发数组中的第一个元素。尝试连接一个字符串,然后返回该字符串。
赞:
const array = ["a", "b", "c", "d"];
let output = "";
for (var i = 0; i < array.length; i++) {
output = output + (i+1) + '. ' + array[i] + ', ';
}
console.log('The order is currently: ' + output);