JS中关于更改数组结构的一些操作

大牛请绕道,本文主要用于自己查看

这几天遇到一个需求,安卓返回一组数据,需要转化为JSON,格式如下

一看好多转译符,好家伙。JSON.parse不起效果但是数组的长度却可以获取到   尝试了一下

let successList= ["{\"blockId\":38,\"cancelUploadState\":0,\"fileLength\":386604,\"fileName\":\"30000040_1001_2.wav\",\"filePath\":\"\/storage\/emulated\/0\/dataPlus\/30000040\/1001\/wav\/30000040_1001_2.wav\",\"id\":2,\"index\":0,\"number\":\"2\",\"taskId\":\"1218\",\"taskName\":\"手机语音采集-成功1\",\"taskType\":\"CL\",\"uploadState\":5,\"userId\":\"30000040\"}",

"{\"blockId\":30,\"cancelUploadState\":0,\"fileLength\":297004,\"fileName\":\"30000040_10000002-2018112300001_2.wav\",\"filePath\":\"\/storage\/emulated\/0\/dataPlus\/30000040\/10000002-2018112300001\/wav\/30000040_10000002-2018112300001_2.wav\",\"id\":4,\"index\":0,\"number\":\"2\",\"taskId\":\"10000002-2018112300001\",\"taskName\":\"手机语音采集-成功2\",\"taskType\":\"CL\",\"uploadState\":5,\"userId\":\"30000040\"}",

"{\"blockId\":31,\"cancelUploadState\":0,\"fileLength\":307244,\"fileName\":\"30000040_10000002-2018112300001_3.wav\",\"filePath\":\"\/storage\/emulated\/0\/dataPlus\/30000040\/10000002-2018112300001\/wav\/30000040_10000002-2018112300001_3.wav\",\"id\":6,\"index\":0,\"number\":\"3\",\"taskId\":\"10000002-2018112300001\",\"taskName\":\"手机语音采集-成功3\",\"taskType\":\"CL\",\"uploadState\":5,\"userId\":\"30000040\"}","{\"blockId\":38,\"cancelUploadState\":0,\"fileLength\":386604,\"fileName\":\"30000040_1001_2.wav\",\"filePath\":\"\/storage\/emulated\/0\/dataPlus\/30000040\/1001\/wav\/30000040_1001_2.wav\",\"id\":2,\"index\":0,\"number\":\"2\",\"taskId\":\"1218\",\"taskName\":\"手机语音采集-成功1\",\"taskType\":\"CL\",\"uploadState\":5,\"userId\":\"30000040\"}",

"{\"blockId\":30,\"cancelUploadState\":0,\"fileLength\":297004,\"fileName\":\"30000040_10000002-2018112300001_2.wav\",\"filePath\":\"\/storage\/emulated\/0\/dataPlus\/30000040\/10000002-2018112300001\/wav\/30000040_10000002-2018112300001_2.wav\",\"id\":4,\"index\":0,\"number\":\"2\",\"taskId\":\"10000002-2018112300001\",\"taskName\":\"手机语音采集-成功2\",\"taskType\":\"CL\",\"uploadState\":5,\"userId\":\"30000040\"}",

"{\"blockId\":31,\"cancelUploadState\":0,\"fileLength\":307244,\"fileName\":\"30000040_10000002-2018112300001_3.wav\",\"filePath\":\"\/storage\/emulated\/0\/dataPlus\/30000040\/10000002-2018112300001\/wav\/30000040_10000002-2018112300001_3.wav\",\"id\":6,\"index\":0,\"number\":\"3\",\"taskId\":\"10000002-2018112300001\",\"taskName\":\"手机语音采集-成功3\",\"taskType\":\"CL\",\"uploadState\":5,\"userId\":\"30000040\"}"]

我是这样操作的 

let newSuccessList = [];

for (let i = 0; i < successList.length; i++) {

let item = JSON.parse(successList[i]);

newSuccessList.push(item);

}

然后数组的格式并不是自己想要的,需要把数组中taskName相同的对象放进同一个数组,使用了如下方法

let titleArr = [];

let finaObj = {};

newSuccessList.forEach(function(obj) {

let array = finaObj[obj["taskName"]] || [];

array.push(obj);

finaObj[obj["taskName"]] = array;

});

titleArr = Object.keys(finaObj);

let newTitle = [];

for(let i=0;i<titleArr.length;i++){

let item = titleArr[i];

let newItem = [];

for(let j=0;j<newSuccessList.length;j++){

if(newSuccessList[j].taskName===item){

newItem.push(newSuccessList[j]);

}

}

let newObj = {

title:titleArr[i],

content:newItem

}

newTitle.push(newObj);

}

数组newTitle就是想要的格式

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值