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

let item = titleArr[i];

let newItem = [];

for(let j=0;j

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

newItem.push(newSuccessList[j]);

}

}

let newObj = {

title:titleArr[i],

content:newItem

}

newTitle.push(newObj);

}

数组newTitle就是想要的格式

你可能感兴趣的:(JS中关于更改数组结构的一些操作)