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

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

將值添加到對(duì)象及其鍵深度基于數(shù)組的對(duì)象

將值添加到對(duì)象及其鍵深度基于數(shù)組的對(duì)象

猛跑小豬 2021-05-07 18:16:01
我有一個(gè)數(shù)組??梢哉f是:const array = ["lvl1", "lvl2", "lvl3", "key"]我有一個(gè)價(jià)值。可以說是:const value = false我有一個(gè)對(duì)象??梢哉f是:const object = {  lvl1: {    dogs: "bark",    lvl2: {      cats: "meow",      lvl3: {        cows: "moo"        key: true      }    }  }}如何創(chuàng)建一個(gè)包含arrayand的函數(shù)value,然后更新該對(duì)象,以便key使用新的更新數(shù)組中的(數(shù)組中的最后一項(xiàng))value?需要根據(jù)array.length - 1數(shù)組中的第一個(gè)字符串適當(dāng)?shù)厍短姿?。例如,我們將其稱為函數(shù)createObject。如果我使用array并value已在上面將其定義為:const newObject = createObject(array, value)然后,newObject應(yīng)該等于:{  lvl1: {    dogs: "bark",    lvl2: {      cats: "meow",      lvl3: {        cows: "moo"        key: false      }    }  }}這是另一個(gè)具有不同嵌套級(jí)別的示例:const updatedObject = createObject(["lvl1", "lvl2", "cats"], "stink")然后,updatedObject應(yīng)該等于:{  lvl1: {    dogs: "bark",    lvl2: {      cats: "stink",      lvl3: {        cows: "moo"        key: true      }    }  }}我已經(jīng)走了這么遠(yuǎn),但沒有用:import object from "./object"const createObject = (array, value) => {  let results = object;  for (let i = 0; i < array.length; i++) {    i === array.length - 1      ? (results = results[array[i]] = {          ...results[array[i]],          [array[i]]: value        })      : (results = results[array[i]] = {          ...results[array[i]],          [results[array[i]]]: {}        });    }  return results;}我不想更改初始對(duì)象。我想返回一個(gè)新對(duì)象。而且我不會(huì)在對(duì)象上添加任何新的鍵/值對(duì),而只會(huì)更改現(xiàn)有的鍵/值對(duì)。
查看完整描述

2 回答

?
烙印99

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

這有點(diǎn)通用,因?yàn)樗患俣ㄔ词且粋€(gè)名為的全局變量object:


let array = ["lvl1", "lvl2", "lvl3", "key"];

let value = false;


let createObject = (keys, value) => {

  let o, obj = o = {};

  let lastKey = keys.pop();

  keys.forEach(key => o = o[key] = o[key] || {});

  o[lastKey] = value;

  return obj;

};


let addToObject = (obj, keys, value) => {

  let o, copy = o = JSON.parse(JSON.stringify(obj));

  let lastKey = keys.pop();

  keys.forEach(key => o = o[key] = o[key] || {});

  o[lastKey] = value;

  return copy;

};


let x = createObject(array, value);

let y = addToObject(x, ['lvl1'], 3);

let z = addToObject(y, ['a', 'b', 'c'], 4);


console.log(x);

console.log(y);

console.log(z);


查看完整回答
反對(duì) 回復(fù) 2021-05-20
  • 2 回答
  • 0 關(guān)注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報(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)