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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在對(duì)象中設(shè)置值

如何在對(duì)象中設(shè)置值

繁花不似錦 2022-10-27 14:13:19
我必須在對(duì)象中設(shè)置值。這就是問題所在:當(dāng)我嘗試在具有一些道具的對(duì)象中編寫道具時(shí),以前的道具將被刪除。我解決了兩個(gè)案例,還有最后一個(gè)。我需要保存 test2。我該如何解決?謝謝。var obj = {  keyOne: "foo",  keyTwo: {    test1: "baz",    test2: {      test21: ["bar"],    }  }}function setObjectProperty(obj, string, value) {  var path = string.split('.');  var currentObj = obj;  for (var i = 0; i < path.length - 1; i++) {    if (!currentObj[path[i]] || currentObj[path[i]] != "string") {      currentObj[path[i]] = {};      currentObj = currentObj[path[i]];    }  }  currentObj[path[path.length - 1]] = value;};setObjectProperty(obj, 'keyOne', 'new');setObjectProperty(obj, 'keyOne.key.key2', 'newnew');setObjectProperty(obj, 'keyTwo.test1', 'zzz');console.log(obj);
查看完整描述

3 回答

?
30秒到達(dá)戰(zhàn)場(chǎng)

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊

很少進(jìn)行更正。


無論創(chuàng)建子對(duì)象,您都需要推進(jìn)對(duì)象路徑

要檢查字符串類型,您需要使用typeof

var obj = {

  keyOne: "foo",

  keyTwo: {

    test1: "baz",

    test2: {

      test21: ["bar"],

    }

  }

}


function setObjectProperty(obj, string, value) {


  var path = string.split('.');

  var currentObj = obj;

  

  for (var i = 0; i < path.length - 1; i++) {

    if (!currentObj[path[i]] || typeof currentObj[path[i]] === 'string') {

      currentObj[path[i]] = {};     

    }

    

     currentObj = currentObj[path[i]];

  }

  currentObj[path[path.length - 1]] = value;

};


setObjectProperty(obj, 'keyOne', 'new');

setObjectProperty(obj, 'keyOne.key.key2', 'newnew');

setObjectProperty(obj, 'keyTwo.test1', 'zzz');


console.log(obj);


查看完整回答
反對(duì) 回復(fù) 2022-10-27
?
慕田峪4524236

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊

這個(gè)測(cè)試currentObj[path[i]] != "string"看起來很奇怪,我想你想用它typeof來代替。


在循環(huán)內(nèi)部,您應(yīng)該在每一步都前進(jìn),但僅在對(duì)象不存在時(shí)才創(chuàng)建它。


工作代碼:


function setObjectProperty(obj, string, value) {

  var path = string.split('.');

  var currentObj = obj;

  for (var i = 0; i < path.length - 1; i++) {

    if (!currentObj[path[i]] || typeof currentObj[path[i]] == "string") {

      currentObj[path[i]] = {};

    }

    currentObj = currentObj[path[i]];

  }

  currentObj[path[path.length - 1]] = value;

};


查看完整回答
反對(duì) 回復(fù) 2022-10-27
?
牛魔王的故事

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊

這是你想要的?


const store = {

  keyOne: "foo",

  keyTwo: {

    test1: "baz",

    test2: {

      test21: ["bar"],

    }

  }

}


function getKeys(key) {

  return key.split(".").filter(k => k.length);

}


function assignProps(object, keys, value = null, root = null) {

  root = root || object;

  

  const key = keys.shift();


  if (!key) return root;


  object[key] = keys.length === 0 ? value : {};


  assignProps(object[key], keys, value, root);

}


assignProps(store, getKeys("keyOne.foo.bar"), "baz");

assignProps(store, getKeys("keyTwo.test1.test2"), "value");


console.log(store);


查看完整回答
反對(duì) 回復(fù) 2022-10-27
  • 3 回答
  • 0 關(guān)注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)