亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何將對象的對象組合成單個對象 Angular

如何將對象的對象組合成單個對象 Angular

慕神8447489 2023-10-20 16:21:04
您好,我有一個對象的對象,我需要合并到單個對象中,下面是對象的對象:{  0: {    CLIENTS_EMAIL: null  }  1: {    CLIENTS_PASSWORD: null  }  2: {    CLIENTS_CONFIRMPASSWORD: null  }  3: {    CLIENTS_FIRSTNAME: null  }  4: {    CLIENTS_LASTNAME: null  }  5: {    CLIENTS_MOBILE: null  }  6: {    CLIENTS_HOMEPHONE: null  }  7: {    CLIENTS_BUSPHONE: null  }  8: {    CLIENTS_RECEIVE_MARKETING_VIA: [      0: {        CLIENTS_ISMARKETINGVIAEMAIL: false      }      1: {        CLIENTS_ISMARKETINGVIAMAIL: false      }      2: {        CLIENTS_ISMARKETINGVIAPHONE: false      }      3: {        CLIENTS_ISMARKETINGVIASMS: false      }    ]  }}您好,我有一個對象的對象,我需要合并到單個對象中,下面是對象的對象:{  0: {    CLIENTS_EMAIL: null  }  1: {    CLIENTS_PASSWORD: null  }  2: {    CLIENTS_CONFIRMPASSWORD: null  }  3: {    CLIENTS_FIRSTNAME: null  }  4: {    CLIENTS_LASTNAME: null  }  5: {    CLIENTS_MOBILE: null  }  6: {    CLIENTS_HOMEPHONE: null  }  7: {    CLIENTS_BUSPHONE: null  }  8: {    CLIENTS_RECEIVE_MARKETING_VIA: [      0: {        CLIENTS_ISMARKETINGVIAEMAIL: false      }      1: {        CLIENTS_ISMARKETINGVIAMAIL: false      }      2: {        CLIENTS_ISMARKETINGVIAPHONE: false      }      3: {        CLIENTS_ISMARKETINGVIASMS: false      }    ]  }}展開片段需要將其添加到單個對象中,下面是示例:let data = {  CLIENTS_EMAIL: null,CLIENTS_PASSWORD: null,CLIENTS_CONFIRMPASSWORD: null,CLIENTS_FIRSTNAME: null,CLIENTS_LASTNAME: null,CLIENTS_MOBILE: null,CLIENTS_HOMEPHONE: null,CLIENTS_BUSPHONE: null,CLIENTS_ISMARKETINGVIAEMAIL: false,CLIENTS_ISMARKETINGVIAMAIL: false,CLIENTS_ISMARKETINGVIAPHONE: false,CLIENTS_ISMARKETINGVIASMS: false,  }以下是我正在嘗試的邏輯:const data = Object.entries(Object.entries(object).map((data: any) => {  return data[1]}))還查看了其他其他功能,但沒有成功
查看完整描述

2 回答

?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

這是演示

有趣的遞歸問題。

但源數據有點奇怪。數組項不是鍵值對象。

應該是這樣的:

var a = {

    0: {

        CLIENTS_EMAIL: null

    },

    1: {

        CLIENTS_PASSWORD: null

    },

    2: {

        CLIENTS_CONFIRMPASSWORD: null

    },

    3: {

        CLIENTS_FIRSTNAME: null

    },

    4: {

        CLIENTS_LASTNAME: null

    },

    5: {

        CLIENTS_MOBILE: null

    },

    6: {

        CLIENTS_HOMEPHONE: null

    },

    7: {

        CLIENTS_BUSPHONE: null

    },

    8: {

        CLIENTS_RECEIVE_MARKETING_VIA: [

            {

                CLIENTS_ISMARKETINGVIAEMAIL: false

            },

            {

                CLIENTS_ISMARKETINGVIAMAIL: false

            },

            {

                CLIENTS_ISMARKETINGVIAPHONE: false

            },

            {

                CLIENTS_ISMARKETINGVIASMS: false

            }

        ]

    }

}

然后使用遞歸


let result = {};


let convert = (obj) => {

    for (var i in obj) {

        if (obj[i] != null && obj[i] !== false) {

            convert(obj[i]);

        } else {

            result[i] = obj[i];

        }

    }

}


查看完整回答
反對 回復 2023-10-20
?
米脂

TA貢獻1836條經驗 獲得超3個贊

該函數遞歸地將對象的對象合并為單個對象,但成本太高。

時間復雜度約為O(n 2 log n)


(雖然沒有測試其他輸入,所以讓我知道它是否不適用于所有內容)


let result = {};

recMerge(ooo); /// --> 'ooo' is your (o)bject (o)f (o)bjects


function recMerge(obj) {

  Object.getOwnPropertyNames(obj).forEach((prop) => {

    const propName = obj[prop];


    Object.getOwnPropertyNames(propName).forEach((propValue) => {

      if (!!propName[propValue] && typeof propName[propValue] === "object") {

        recMerge(propName[propValue]);

      } else {

        result = { ...result, ...propName };

      }

    });

  });

}

例子

輸出將始終是每次迭代中最內部的對象,并分布到單個對象中。


CLIENTS_RECEIVE_MARKETING_VIA: {

  0: {

    CLIENTS_ISMARKETINGVIAEMAIL: false,

  },

  1: {

    CLIENTS_ISMARKETINGVIAMAIL: false,

  },

  2: {

    CLIENTS_ISMARKETINGVIAPHONE: false,

  },

  3: {

    CLIENTS_ISMARKETINGVIASMS: {

      0: {

        CLIENTS_ISMARKETINGVIATEXT: false,

      },

      1: {

        CLIENTS_ISMARKETINGVIAPIC: false,

      },

    },

  },

},

會輸出

{

  CLIENTS_ISMARKETINGVIAEMAIL: false,

  CLIENTS_ISMARKETINGVIAMAIL: false,

  CLIENTS_ISMARKETINGVIAPHONE: false,

  CLIENTS_ISMARKETINGVIATEXT: false,

  CLIENTS_ISMARKETINGVIAPIC: false,

}


查看完整回答
反對 回復 2023-10-20
  • 2 回答
  • 0 關注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

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

公眾號

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