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

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

使用數組屬性初始化對象

使用數組屬性初始化對象

手掌心 2023-01-06 16:00:07
如何在 JavaScript 中初始化一個對象,其屬性是數組?我想要一個這種格式的對象:foo = { prop1: [0, 1], prop2: [1, 1], prop3: [0] }我的用例如下:- 當一個屬性不存在時,創建這個應該是一個數組的屬性并添加一個數字。- 當屬性已經存在時,將數字推送到該數組;這樣我就不能每次都初始化一個數組。到目前為止我所做的是:  var obj = {};   arr.forEach(x => { !obj[x] && obj[x].push(1) });我收到此錯誤:未捕獲的類型錯誤:無法讀取未定義的屬性“推送”這是有道理的,因為該屬性尚未初始化為空數組。
查看完整描述

2 回答

?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

Ciao 你可以試試這個:


let obj = {};

let arr = ["prop1","prop2","prop1","prop3"];

arr.forEach((x) => {

   if(obj.hasOwnProperty(x)) obj[x].push(1);

   else {

      obj[x] = [];

      obj[x].push(1);

   } 

})

console.log(obj);


如果 obj 已經有屬性 x ( hasOwnProperty) push value 1 else init x as array property and push 1.


查看完整回答
反對 回復 2023-01-06
?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

添加此代碼段:

arr.forEach((x) => {obj[x] = (obj[x] || []).concat(1);})

如果obj[x]undefined,那么它還沒有被初始化。因此,undefined || []解析為[],一個空數組,可以將1或您想要的任何數據連接到該數組。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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