首页 > 解决方案 > 我可以使用 Array.prototype.map 的模数来每 3 个索引插入新行吗?

问题描述

我正在尝试学习 es6 并使用 pokemon API。myRoute = ' https://pokeapi.co/api/v2/ability/144/ ';

const arrObservable = this._http.get(newurl);
 arrObservable.subscribe( 
(data) => {
 const pokeString = data.pokemon.map( ( { pokemon }: obj ) => pokemon.name );
console.log(`There are ${data.pokemon.length} pokemon with the ${data.name} ability:  ${pokeString}`);

})

输出:

有 19 个具有再生能力的口袋妖怪:slowpoke、slowbro、tangela、slowking、corsola、ho-oh、tangrowth、audino、solosis、duosion、reuniclus、foongus、amoonguss、alomomola、mienfoo、mienshao、mareanie、toxapex、tor​​nadus-therian

我得到了正确的结果,它只是在控制台中看起来有点恶心,所以我想知道是否有办法在仍然使用 .map() 函数的同时每隔几行添加一个 '\n' ?

标签: javascriptarraysecmascript-6

解决方案


使用.map后,用逗号连接,然后.replace在结果字符串上使用以用这 3 个单词和逗号加上换行符替换用逗号分隔的 3 个单词的实例。这样,您pokeString实际上将是一个字符串:

const pokeString = data.pokemon
  .map( ( { pokemon }: obj ) => pokemon.name )
  .join(',')
  .replace(/[^,]+,[^,]+,[^,]+,/g, '$&\n');

const names = ['slowpoke','slowbro','tangela','slowking','corsola','ho-oh','tangrowth','audino','solosis','duosion','reuniclus','foongus','amoonguss','alomomola','mienfoo','mienshao','mareanie','toxapex','tornadus-therian'];

const pokeString = names
  .join(',')
  .replace(/[^,]+,[^,]+,[^,]+,/g, '$&\n');
  
console.log(pokeString);


推荐阅读