js 对象数组互相转换

数组中根据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.csdn.net/qq_31126175/article/details/79932365

https://www.cnblogs.com/snandy/archive/2011/03/02/1968580.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值