猿问

动态使用join方法

我有一个基于每个英文字母索引的参考数组:

let reference = [0, 2, 3];

以及一系列单词甚至短语:

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

我想连接每个单词 fromwords array来创建一个简单的句子,但要考虑单词之间的差距(只要参考数组中的值不是连续数字!),因此所需的输出是:

A...C D // gaps filled with three dots

问题是我找不到使用join()方法来做到这一点的解决方案!

任何帮助,将不胜感激


摇曳的蔷薇
浏览 225回答 3
3回答

慕姐8265434

您可以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(' '));

凤凰求蛊

您可以通过检查最后一个值和实际值的增量来减少数组。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);

胡说叔叔

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) {&nbsp; const diff = reference[i] - reference[prev];&nbsp; if (diff > 1) {&nbsp; &nbsp; joined += "..." + words[i];&nbsp; } else {&nbsp; &nbsp; joined += " " + words[i];&nbsp; }&nbsp; prev = i;}//Since CDE ar continuous and AC and EH are notconsole.info(joined);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答