数组中根据ASCII排序
可以使用以下方法,再转换为对象可以作为api接口中签名sign参数的计算
var eidtionTypeList = [
{key:104212,val:"影刻本"},
{key:104211,val:"翻刻本"},
{key:104210,val:"重刻本"},
{key:110,val:"局本"},
{key:109,val:"殿本"},
{key:108,val:"藍印本"},
{key:107,val:"朱印本"},
{key:106,val:"套印本"},
{key:105,val:"活字印本"},
{key:104,val:"刻本"},
{key:103,val:"抄本"},
{key:102,val:"寫本"},
{key:101,val:"稿本"},
{key:100,val:""}
];
eidtionTypeList.sort(function(a,b){return a.key+"">b.key+"";});
console.log(eidtionTypeList);
2019.07.20 ----------------更新
sort函数里的comparator应该返回0,1 或 -1,不是返回一个boolean。
所以上述代码中排序部分应该改为
arr.sort(function(a, b) {
if (a.key+"" < b.key+"" ) {// 按某种排序标准进行比较, a 小于 b
return -1;
}
if (a.key+"" > b.key+"" ) {
return 1;
}
// a must be equal to b
return 0;
});
参见链接
修改后的代码为
var eidtionTypeList = [
{key:104212,val:"影刻本"},
{key:104211,val:"翻刻本"},
{key:104210,val:"重刻本"},
{key:110,val:"局本"},
{key:109,val:"殿本"},
{key:108,val:"藍印本"},
{key:107,val:"朱印本"},
{key:106,val:"套印本"},
{key:105,val:"活字印本"},
{key:104,val:"刻本"},
{key:103,val:"抄本"},
{key:102,val:"寫本"},
{key:101,val:"稿本"},
{key:100,val:""}
];
eidtionTypeList.sort(function(a, b) {if (a.key+"" < b.key+"" ) {return -1;}if (a.key+"" > b.key+"" ) {return 1;}return 0;});
console.log(eidtionTypeList);
运行结果:
//--------------更新结束
对象转数组
let arr = []
let obj = {
dr: "dr001",
ljy: "ljy002"
}
for(let prop in obj) {
arr.push({
name: prop,
ct: obj[prop]
})
}
console.log('arr', JSON.stringify(arr, null, 2));
运行结果(直接打印的arr)
数组转对象
let arr = [{
name: 'dr',
ct: 'dr001'
},
{
name: 'ljy',
ct: 'ljy002'
}]
let obj = {}
arr.forEach(item=> {
obj[item.name] = item.ct
})
console.log('obj', JSON.stringify(obj, null, 2));
运行结果:(直接打印obj)
参考链接
https://blog.youkuaiyun.com/qq_31126175/article/details/79932365
https://www.cnblogs.com/snandy/archive/2011/03/02/1968580.html