首页 > 解决方案 > 逐字母循环遍历名称数组

问题描述

let names = ['pete', 'dave', 'sara', 'toni', 'michael'];
let name = "";
let names2 = [];


// names[i][j]



console.log (names);
console.log (names2); 

我必须找到一种方法来逐字母循环遍历 names 数组,并使 names2 的输出成为逐字母处理的同一个数组。

到目前为止,我有这个:

for (let i = 0; i < names.length; i++) {
for (let j = 0; j < names[i].length; j++) {
    name += names[i][j];
    names2 += name;
    name = "";

console.log (names);
console.log (names2);

输出应该是:

['pete', 'dave', 'sara', 'toni', 'michael']
['pete', 'dave', 'sara', 'toni', 'michael']

(第二个一个字母一个字母地写下来,第一个就是我们一开始设置的普通数组)

但我得到的是:

['pete', 'dave', 'sara', 'toni', 'michael']
petedavesaratonimichael

谁能帮我?

let names = ['pete', 'dave', 'sara', 'toni', 'michael'];
let name = "";
let names2 = [];

for (let i = 0; i < names.length; i++) {
  for (let j = 0; j < names[i].length; j++) {
      name += names[i][j];
      names2 += name;
      name = "";
  }
}

console.log (names);
console.log (names2);

标签: javascriptarraysloopsfor-loop

解决方案


我不确定这个练习是关于什么的,但这里有一个解决方案(没有循环但有Array.mapand Array.reduce)。

let names = ['pete', 'dave', 'sara', 'toni', 'michael'];

const convert = (names) => names.map(name => Array.from(name).reduce((result, c) => `${result}${c}`, ''))

console.log(names);
console.log(convert(names));

在您的解决方案中,您可能正在使用重载+=运算符将数组强制转换为字符串。您应该在添加元素时使用Array.pushor 。Array.concat


推荐阅读