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

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

已知一個對象,還有一個數(shù)據(jù)路徑的字符串,如何根據(jù)數(shù)據(jù)路徑找到值

已知一個對象,還有一個數(shù)據(jù)路徑的字符串,如何根據(jù)數(shù)據(jù)路徑找到值

慕森王 2019-03-14 19:15:27
有一個對象var obj = {  a: {    b: {      c: 3    }  }};var text = 'a.b.c'如何根據(jù) text 路徑修改 c 的值為 4,讓結果為{  a: {    b: {      c: 4    }  }}小程序的 setData 方法就支持數(shù)據(jù)路徑輸入,我就是想知道如何實現(xiàn)這個功能,已知思路是遞歸let text = 'a.b.c';this.setData({    [text]: 4})謝謝各位大佬幫忙
查看完整描述

3 回答

?
ibeautiful

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

var obj = {

  a: {

    b: {

      c: 3

    }

  }

}

var text = 'a.b.c'

function setData(obj, config) {

  let keys = Object.keys(config)

  keys.forEach(key => {

    cur = obj

    let names = key.split('.')

    let last = names.length - 1

    names.forEach((name, index) => {

      if (!cur[name]) cur[name] = {}

      if (last === index) {

        cur[name] = config[key]

      } else {

        cur = cur[name]

      }

    })

  })

}

setData(obj, {[text]: 4, 'e.f': 6}) // obj: {a:{b:{c:4}},e:{f:6}}}


查看完整回答
反對 回復 2019-04-02
?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

function setObjfromText(obj,text,value){

    let temp=obj

    let textgroup = text.split('.')

    let l = textgroup.length

    for(let i=0;i<l-1;i++){

      temp[textgroup[i]] = typeof(temp[textgroup[i]])=='object'?temp[textgroup[i]]:{}

      temp = temp[textgroup[i]]

    }

    temp[textgroup[l-1]] = temp[textgroup[l-1]] | value

    return obj

}


查看完整回答
反對 回復 2019-04-02
?
胡子哥哥

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

function setObjText(o,t,v){ //因為是設置,所以我理解已經有這個結構否則需要保證路徑上各級都是對象

let tmp=o;

let t2k=t.split('.');

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

    tmp[t2k[i]]=typeof(tmp[t2k[i]])=='object'?tmp[t2k[i]]:{} ;

    tmp=tmp[t2k[i]];

  }

  tmp=value;

}


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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