为了账号安全,请及时绑定邮箱和手机立即绑定

动态使用join方法

动态使用join方法

摇曳的蔷薇 2021-11-12 18:32:11
我有一个基于每个英文字母索引的参考数组:let reference = [0, 2, 3];以及一系列单词甚至短语:let words = ["A", "C", "D"];我想连接每个单词 fromwords array来创建一个简单的句子,但要考虑单词之间的差距(只要参考数组中的值不是连续数字!),因此所需的输出是:A...C D // gaps filled with three dots问题是我找不到使用join()方法来做到这一点的解决方案!任何帮助,将不胜感激
查看完整描述

3 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

您可以words根据中的差距创建一个新数组reference,然后加入:


let reference = [0, 2, 3];

let words = ["A", "C", "D"];


let res = [];

reference.forEach((n, i) => {

  if (n - reference[i - 1] >= 2) res.push('...', words[i]);

  else res.push(words[i]);

});


console.log(res.join(' '));


查看完整回答
反对 回复 2021-11-12
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

您可以通过检查最后一个值和实际值的增量来减少数组。


var reference = [0, 2, 3],

    result = reference.reduce((r, v, i, { [i - 1]: last }) =>

        r + (r && (i && v - last > 1 ? '...' : ' ')) + (v + 10).toString(36).toUpperCase(), '');


console.log(result);


查看完整回答
反对 回复 2021-11-12
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

reference在迭代实际words数组时每次比较数组值的方法:


let reference = [0, 2, 3, 4, 7];


let words = ["A", "C", "D", "E", "H"];

let prev = 0;

let joined = words[prev];

for (let i = 1, l = words.length; i < l; ++i) {

  const diff = reference[i] - reference[prev];

  if (diff > 1) {

    joined += "..." + words[i];

  } else {

    joined += " " + words[i];

  }


  prev = i;

}


//Since CDE ar continuous and AC and EH are not

console.info(joined);


查看完整回答
反对 回复 2021-11-12
  • 3 回答
  • 0 关注
  • 224 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信