如何返回带编号的字符串数组的元素?

时间:2019-07-18 19:20:40

标签: javascript arrays

我有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,"

4 个答案:

答案 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);