javascript - 根据值中的文本将数组拆分为小数组

标签 javascript arrays sorting ecmascript-6

我有一个大数组,如下例所示:

let array = ['aa-we', 'aa-we__qq', 'aa-we__qw', 'gsPlsOdd', 'bc-po-lp', 'bc-po-lp--ps', 'de', 'de__io', 'de__sl', 'de--xz', 'ccsDdd'];

我想按值将此数组拆分为小数组:

let array = [
  ['aa-we', 'aa-we__qq', 'aa-we__qw'],
  ['bc-po-lp', 'bc-po-lp--ps'],
  ['de', 'de__io', 'de__sl', 'de--xz']  
]

// and camelcase strings should be removed 

数组中的值具有类似于 BEM 选择器的语法,因此如果不同字符串的前缀相同,则应将它们包装在单个数组中。

如果可能的话,我怎样才能做到这一点,而不需要额外的库?

感谢您的帮助或提示!

最佳答案

console.clear()
let data = [
  "aa-we",
  "aa-we__qq",
  "aa-we__qw",
  "gsPlsOdd",
  "bc-po-lp",
  "bc-po-lp--ps",
  "de",
  "de__io",
  "de__sl",
  "de--xz",
  "ccsDdd",
];


resultO = data.reduce((acc, val, idx) => {
  if (val.match(/[A-Z]/)) {return acc;}
  const sel = val.replace(/^(.*)(__|--).*$/g, "$1");
  acc[sel] = acc[sel] || [];
  acc[sel].push(val)
  return acc;
}, {})
resultA = Object.values(resultO)

console.log(resultA)

关于javascript - 根据值中的文本将数组拆分为小数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54647020/

相关文章:

javascript - Fullcalendar 超薄事件(CSS 错误)

javascript - 为什么我的带功能箭头的 map() 不起作用?

java - 反转数字

PHP 多维数组从 MySQL 查询乱序

javascript - jQuery:ajax函数的延迟间隔,直到上一次运行完成

javascript 如何获取当前不可见的元素

javascript - 使用计时器将父子图片移动 1px

java - 找不到符号,如何编写自定义异常类

按对象中包含的字典值(按键)对对象列表进行排序的 Pythonic 方法

c++ - 将字符串转换为全部大写 - C++