我有一個最初是空的物件,但它最終看起來像這樣:
numusers = { room1 : 1, room2 : 5, room3 : 2};
這總是會因情況而異。如果某個用戶進入room1,那么room1應該在那個時刻被創建并且值將是1,如果其他用戶同樣進入room2但是如果另一個用戶進入room1那么值將不得不增加到2等等。
我試過這個:
numusers = { room1 : 1, room2 : 5, room3 : 2};
let initnum = 0; //the initial value each room will have
var inroom = "room1"; //this is the room this user entered
numusers.push({ inroom : initnum });
它沒有用,我想不出不同的方法。我應該在這里做什么?
謝謝你。
uj5u.com熱心網友回復:
numusers 是一個物件,而不是一個陣列。
如果要設定屬性的值,可以使用括號表示法:
let initnum = 0;
var inroom = "room1";
numusers = {};
numusers[inroom] = initnum
console.log(numusers)
要在輸入重復鍵時遞增,可以先檢查該屬性是否存在:
newusers = {}
function process(room){
newusers[room] = newusers[room] ? newusers[room] 1 : 1;
console.log(newusers)
}
process("room1")
process("room1")
process("room2")
uj5u.com熱心網友回復:
如果鍵和屬性不存在,則創建它,如果它已經存在,則將其值增加 1。
@Spectric 撰寫它的方式絕對更干凈:
numusers[inroom] = numusers[inroom] ? numusers[inroom] 1 : 1;
這意味著和我建議的一樣,直接將房間的鍵設定為它需要的值,如果存在則加 1,如果不存在則創建。
下面我包含了一個帶有選擇選項的示例。
const numusers = {};
const roomSelect = document.querySelector('#rooms');
roomSelect.addEventListener('change', function() {
let inroom = this.value;
numusers[inroom] = numusers[inroom] ? numusers[inroom] 1 : 1;
console.log(numusers);
});
<select name="room" id="rooms">
<option value="room1">Room 1</option>
<option value="room2">Room 2</option>
<option value="room3">Room 3</option>
</select>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/361585.html
標籤:javascript 目的
上一篇:物件INSIDE陣列的條件渲染
