javascript - 自然排序数组
问题描述
我需要对给我的数组进行排序。数组看起来像这样。
var provided_array = [
inner_array_one = ['1', '10', '11', 'Alpha', '2A'],
inner_array_two = ['Hotdogs', 'Pies', 'Burgers', 'Kebabs', 'Tacos']
];
我尽量减少了这个例子。实际上,通常有十几个这样的内部数组。
inner_array_one 中的数据通过索引与inner_array_two 的数据相关。即“2A”与“Tacos”有关。
排序需要是“自然的”,即 10 之前的 2。我需要的总体预期输出是
provided_array[
inner_array_one['1', '2A', '10', '11', 'Alpha'],
inner_array_two['Hotdogs', 'Tacos', 'Pies', 'Burgers', 'Kebabs']
];
我尝试使用 javascript 排序函数,但它似乎只能对 inner_arrays 的顺序进行排序,而不是对这些数组的内容进行排序。
我想要的可以实现吗?
解决方案
您可以为索引使用一个辅助数组,并对第一个内部数组进行自然排序,并将所有数组与索引数组映射。
var arrays = [
['1', '10', '11', 'Alpha', '2A'],
['Hotdogs', 'Pies', 'Burgers', 'Kebabs', 'Tacos']
],
indices = Object.keys(arrays[0]);
indices.sort((a, b) => arrays[0][a].localeCompare(arrays[0][b], undefined, { numeric: true, sensitivity: 'base' }));
console.log(arrays.map(a => indices.map(i => a[i])));
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- gerrit - Gerrit 将补丁集移动到合并的分支
- reactjs - 用打字稿反应地图 gl
- azure - Azure DevOps 管道期间的 SBT 凭据
- java - 如何在 JSON 中使用 oneOf 并使用 Jackson 生成 java 对象
- html - 如何根据元素的颜色Hexcode值在mat-cell中设置按钮或图标颜色
- ios - iOS 通用链接在 react-native iOS 中不起作用
- typescript - Typescript:如何将库接口中的属性从可选覆盖到必需
- javascript - moment(aDate).utcOffset(aDate).format() 方法正在剥离日期,例如 +00:00Z
- php - 如何在 WordPress 循环中使用 ajax 加载下一页?
- java - Azure 资源管理器计费不起作用