第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

遍歷JSON數據,數據格式特殊怎么處理?

遍歷JSON數據,數據格式特殊怎么處理?

紫衣仙女 2019-02-14 18:15:05
后端返回一組數據,其中有一項是這樣的: "oneWeekAll": "{weekStart:2017-11-13,weekEnd:2017-11-19};{weekStart:2017-11-06,weekEnd:2017-11-12};{weekStart:2017-10-30,weekEnd:2017-11-05};" 我要如何轉成正常的數組以方便循環(huán)遍歷呢?這里面每個大括號都是用分號間隔的,并且一整串在一個雙引號內,搞得我有點亂套。求助大神,謝謝附上后臺返回的全部數據:AuditRetCode:"1"AuditRetVal:"success"RetCode:"1"RetVal:"1"oneWeekAll:"{weekStart:2017-11-13,weekEnd:2017-11-19};{weekStart:2017-11-06,weekEnd:2017-11-12};{weekStart:2017-10-30,weekEnd:2017-11-05};"我要的東西在 oneWeekAll 里
查看完整描述

2 回答

?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

要簡單點的話,就這樣:


const oneWeekAll = "{weekStart:2017-11-13,weekEnd:2017-11-19};{weekStart:2017-11-06,weekEnd:2017-11-12};{weekStart:2017-10-30,weekEnd:2017-11-05};";


const result = oneWeekAll.split(';').filter(item => item).map(item => {

  const str = item.replace(/\{|\}/g, '')

  const arr = str.split(/\:|\,/)

  return {

    weekStart: arr[1],

    weekEnd: arr[3]

  }

});


console.log(result);


查看完整回答
反對 回復 2019-02-27
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

const all = "{weekStart:2017-11-13,weekEnd:2017-11-19};{weekStart:2017-11-06,weekEnd:2017-11-12};{weekStart:2017-10-30,weekEnd:2017-11-05};";


const list = all.split(";")

    .filter(t => t)

    .map(t => t.split(/[{},:]/))

    .map(parts => ({

        [parts[1]]: parts[2],

        [parts[3]]: parts[4]

    }));

然后還寫了一個比較搞笑的版本(性能肯定不怎么樣)


const all = "{weekStart:2017-11-13,weekEnd:2017-11-19};{weekStart:2017-11-06,weekEnd:2017-11-12};{weekStart:2017-10-30,weekEnd:2017-11-05};";


const json = all

    .replace(/;?$/, "")

    .replace(/,/g, "\",\"")

    .replace(/:/g, "\":\"")

    .replace(/;/g, ",")

    .replace(/\{/g, "{\"")

    .replace(/\}/g, "\"}");


const list = JSON.parse(`[${json}]`);

補充一下,上面最后一種肯定是很慢的,不過在 jsPerf 上測試第1種比 @Ash_Shen 的答案慢 35% 左右,嘗試把兩個 map 合并成一個 map,作用不大,但是改了一個對象的 key,速度一下子就起來了,居然提升了 150% (也就是2.5倍)


const list = all.split(";")

    .filter(t => t)

    .map(t => {

        const parts = t.split(/[{},:]/);

        return {

            weekStart: parts[2],

            weekEnd: parts[4]

        };

    });


查看完整回答
反對 回復 2019-02-27
  • 2 回答
  • 0 關注
  • 820 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號