JavaScript如何根据数组元素的字符串前缀提取每组首个唯一值
JavaScript 提取每个前缀首个匹配元素的实现方案
核心逻辑是遍历数组时记录已出现过的前缀,每个前缀仅保留第一次出现的对应元素,仅需一次遍历即可完成,时间复杂度为O(n)。
基础实现(可读性最高)
const mainArr = ['shape-10983', 'size-2364', 'size-7800', 'size-4602', 'shape-11073', 'size-15027', 'size-15030', 'size-15033', 'height-3399', 'height-5884']; // 存储已出现过的前缀 const existedPrefix = new Set(); const requiredVal = []; for (const item of mainArr) { // 提取元素前缀(截取第一个横杠前的内容,兼容元素内存在多个横杠的场景) const prefix = item.slice(0, item.indexOf('-')); // 仅当该前缀未出现过时存入结果 if (!existedPrefix.has(prefix)) { requiredVal.push(item); existedPrefix.add(prefix); } } console.log(requiredVal); // 输出 ["shape-10983", "size-2364", "height-3399"]
简洁版reduce实现
const requiredVal = mainArr.reduce((accumulator, current) => { const prefix = current.slice(0, current.indexOf('-')); if (!accumulator.record.has(prefix)) { accumulator.result.push(current); accumulator.record.add(prefix); } return accumulator; }, { record: new Set(), result: [] }).result;
内容的提问来源于stack exchange,提问作者Ali Mir
相关产品推荐
相关产品推荐

