在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML5  HTML/ 關(guān)于后臺(tái)返回的數(shù)據(jù)解析

關(guān)于后臺(tái)返回的數(shù)據(jù)解析

取這種層級(jí)的數(shù)據(jù),真的是很難受,有什么好的前臺(tái)處理方式嗎?

clipboard.png

回答
編輯回答
敢試

lodash的_.get(obj,path)
如果不存在路徑會(huì)返還undefined而不是報(bào)錯(cuò)

2018年4月23日 06:47
編輯回答
假灑脫

做分頁(yè)這個(gè)業(yè)務(wù)就是比較麻煩。要不然分頁(yè)這個(gè)功能你讓后端做,你只用調(diào)用方法,傳入數(shù)據(jù)即可。

2017年12月8日 03:21
編輯回答
若相惜

只需要判斷整體的 正確 還是 錯(cuò)誤,格式的事,后端處理好。出錯(cuò)了找后端。

2017年4月12日 02:33
編輯回答
檸檬藍(lán)

我看你的意思是不想寫(xiě)那么長(zhǎng)的&&。
typescript 有個(gè)語(yǔ)法糖是 a?.b?.c 即是說(shuō)有a的情況下接著才去判斷a.b 以此類推。要不你自己封裝一個(gè)小函數(shù)判斷一下,比如

var data = {
            page: {
                count: '',
                total: 1
            }
        }
        function fn(param, data) {
            if (data) {
                return param.split('?.').every(function (v) {
                    return data[v] ? (data = data[v] , true) : false
                })
            }
            else {
                return false
            }
        }
        // 判斷的時(shí)候就
        if(fn('page?.count', data)) 這樣
        

這里只給你提供一個(gè)簡(jiǎn)單的思路,代碼不夠嚴(yán)謹(jǐn),比如0的時(shí)候也被隱式轉(zhuǎn)換false了。

不過(guò)遇到這種情況最好的處理方法,就是跟后端溝通一下。畢竟是團(tuán)隊(duì)協(xié)作開(kāi)發(fā),溝通也是職場(chǎng)的重要技能。

2018年9月16日 03:32
編輯回答
瞄小懶

題主的真實(shí)需求描述的不太明確,只能臆測(cè)下先
需求1:不想寫(xiě)深層次的數(shù)據(jù)判斷,和取層級(jí)結(jié)構(gòu)的數(shù)據(jù)

if(data && data.page && data.page.total && data.page.count){
    paginationHandler[hash](data.page.total, data.page.count)
}

其實(shí)這一步的簡(jiǎn)化是最簡(jiǎn)單的,向其他人回答的一樣,和后端做好約定,保證這幾個(gè)值都是有默認(rèn)值的

// 簡(jiǎn)化后就一句直接調(diào)
paginationHandler[hash](data.page.total, data.page.count)

但是,如果碰到個(gè)死腦筋的后端怎么辦呢!?

  1. 先向他的直屬領(lǐng)導(dǎo)反應(yīng)
  2. 進(jìn)行解構(gòu)
// data和data.page肯定會(huì)是有默認(rèn)值的,如果這都沒(méi)有,直接投訴好了
const {total, count} = data.page

paginationHandler[hash](total, count)
  1. 對(duì)分類數(shù)據(jù)抽像,定義分頁(yè)操作實(shí)例

(題主問(wèn)題中的第二段代碼建議采用此方式)

// 所有的其他深層次的業(yè)務(wù)都可以這樣處理,前端轉(zhuǎn)換后端接口的數(shù)據(jù)結(jié)構(gòu),自已維護(hù)
class Pagination {
    ...
}
const page = new Pagination(data)

paginationHandler[hash](page.total, page.count)
2018年7月22日 02:08
編輯回答
笨笨噠
let {page = {}, stationLetterInfo = {}} = data;
function paginationHandle({total: 0, count: 0}) {
    // ...
}
paginationHandle(page);
// 另一個(gè)函數(shù)也一樣

有一點(diǎn)注意的是參數(shù)默認(rèn)值只有在undefined情況下生效,需要和后臺(tái)同學(xué)做好溝通

2017年9月25日 13:16
編輯回答
糖果果
/**
 * 安全的獲取值
 *
 * safe_get(obj, 'a.b.c') // 123
 * safe_get(obj, 'a.b.d', '我是默認(rèn)值') // 我是默認(rèn)值
 *
 * @export
 * @param {*} targetObj
 * @param {string} keyString
 * @param {*} defaultValue
 * @returns {*}
 */
export function safe_get(targetObj: any, keyString: string, defaultValue: any): any {
  const path = String(keyString).split('.');
  const result = path.reduce((preObj, curPath) => {
    return (preObj !== null && !is_undefined(preObj))
      ? preObj[curPath]
      : preObj;
  }, targetObj);

  return is_undefined(result)
    ? (is_undefined(defaultValue) ? result : defaultValue)
    : result;
}
2017年2月17日 14:39