根据值将javascript数组排序为嵌套数组
Sort a javascript array into nested arrays based on values
我有一个文件名数组,如下所示:
var filesArray = [
"120.png",
"120s.png",
"120t.jpg",
"169.png",
"169r.jpg",
"169s.jpg",
"169t.jpg",
"170.png",
"170r.jpg",
"170s.jpg",
"170t.jpg",
]
使用javascript (es5或6或7没关系,因为我使用babel),我想把它排序成一个嵌套数组,如下所示:
[
[
"120.png",
"120s.png",
"120t.jpg"
],
[
"170.png",
"170r.jpg",
"170s.jpg",
"170t.jpg"
]
]
我知道,为了找到相同的基名,我必须运行regex,我已经使用filesArray[i].slice(0, -4).replace(/[^0-9'.]/g, '') )
我不知道的是如何运行array.sort
或array.map
来获得最终的嵌套数组。
顺便说一下,这是一个很长的文件名列表,我更喜欢在不改变原始数组的情况下最快最有效的方法。
您可以使用Map
对条目进行分组。
var filesArray = ["120.png", "120s.png", "120t.jpg", "169.png", "169r.jpg", "169s.jpg", "169t.jpg", "170.png", "170r.jpg", "170s.jpg", "170t.jpg"],
grouped = [];
filesArray.forEach(function (a) {
var key = a.slice(0, -4).replace(/[^0-9'.]/g, ''),
array = this.get(key);
if (!array) {
array = [];
this.set(key, array);
grouped.push(array);
}
array.push(a);
}, new Map);
console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }
var filesArray = ["120.png", "120s.png", "120t.jpg", "169.png", "169r.jpg", "169s.jpg", "169t.jpg", "170.png", "170r.jpg", "170s.jpg", "170t.jpg"];
var result = [];
var obj = filesArray.reduce(function(prev, curr, index, array) {
var rawName = curr.match(/[0-9]/g);
if (rawName.length) {
var name = rawName.join('');
if (prev[name]) {
prev[name].push(curr);
} else {
prev[name] = [curr];
}
}
return prev
}, {});
Object.keys(obj).forEach(function(key) {
result.push(obj[key]);
});
console.log(result);
.as-console-wrapper {
max-height: 100% !important;
top: 0;
}
.as-console-row,
.as-console-row-code {
background-color: #fff!important;
}
相关文章:
- 从多维嵌套json数组创建下拉列表
- 如何通过json对象数组为嵌套对象赋值
- 为循环嵌套的Javascript未按预期返回数组
- 具有嵌套对象数组的 Javascript 对象的递归搜索函数
- 将js对象更改为使用嵌套的可观察数组敲除js视图模型
- MongoDB嵌套对象数组后查询
- 从对象数组中动态创建嵌套json
- 使用Angular.js解析JSON中的嵌套对象数组
- 如何将id数组与带下划线的对象数组嵌套属性进行比较
- 将JS对象数组转换为嵌套形式的最有效方法
- 在javascript/angular中创建播放列表(按值复制数组,但按引用设置嵌套对象)
- 嵌套在 ng 重复中的拼接数组
- 嵌套/同心组和mouseenter/mouseleve
- javascript获取嵌套子数组中的对象
- 嵌套捕获组结果
- 如何在嵌套级别不受限制的情况下显示对象的动态嵌套子数组对象
- 按嵌套子数组对 arr 进行排序
- 播放框架 - 表单不绑定到嵌套元组
- 遍历嵌套到组和节中的一组输入
- 在数组和嵌套子数组中搜索Lodash属性