3 回答
![?](http://img1.sycdn.imooc.com/5333a1d100010c2602000200-100-100.jpg)
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(' '));
![?](http://img1.sycdn.imooc.com/533e4c0500010c7602000200-100-100.jpg)
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);
![?](http://img1.sycdn.imooc.com/54584f9d0001219b02200220-100-100.jpg)
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);
添加回答
举报