javascript - 通过 JavaScript 中的自定义函数对数组进行排序
问题描述
我只使用 Javascript。
我有以下字符串:
?pn1=age&pn2=name&pv1=12&pv2=alice
我需要做的是有以下结果:
age:12|name:alice
我想到了一种方法来做到这一点,如下:
var str = "?pn1=age&pn2=name&pv1=12&pv2=alice";
var strSplit = str.split("&");
for (var i = 0; i < strSplit.length; i++) {
console.log(strSplit[i]);
}
这将返回以下结果:
?pn1=age
pn2=name
pv1=12
pv2=alice
由于我想将pn1和pv1以及pn2和pv2连接在一起,所以字符串末尾的数字很重要。
?pn 1 =年龄
pn 2 =姓名
pv 1 =12
pv 2 =alice
所以我想一种方法是按这个数字对数组进行排序。然后在排序后将每 2 个值连接在一起。
我尝试了以下代码:
strSplit.sort(function() {
var pref = strSplit[i].split('=')[0];
return pref.charAt(pref.length-1);
});
它似乎不起作用
任何帮助,将不胜感激
解决方案
您可以拆分零件,收集所有项目并返回连接的字符串。
var string = '?pn1=age&pn2=name&pv1=12&pv2=alice',
result = string
.slice(1)
.split('&')
.reduce((r, p) => {
var [k, value] = p.split('='),
[key, index] = k.split(/(\d+)/);
index--;
r[index] = r[index] || {};
r[index][key] = value;
return r;
}, [])
.map(({ pn, pv }) => [pn, pv].join(':'))
.join('|');
console.log(result);
推荐阅读
- ios - 使用 nil 合并运算符来增加值的问题
- spring - 当响应正文中的某些字段不为空时,Spring WebClient 将某些字段设置为空
- sql - 返回 Elasticsearch SQL 查询中的所有行
- java - 2000-1-2 错误的 Java LocalDate 格式
- azure - 使用 Azure REST API 检索 Linux 虚拟机的存储使用情况
- python - Keras - 保存中间层的输出
- c++ - 错误损坏的大小与 prev_size:尝试在 C++ 中打开和读取文件描述符时
- ios - 以弹出窗口的形式启动 iOS 应用程序
- python - 从烧瓶请求python中获取null
- amazon-web-services - 是否可以从另一个 Step 函数调用一个 Step Function?