3 回答

TA貢獻1936條經驗 獲得超7個贊
具有正確選擇器的QuerySelectorAll將為您提供檢查的值:
注意我從對象數組更改為普通對象
const item = {
"lychee": {"price": 10,"lot": 8},
"orange": {"price": 12,"lot": 6},
"apple": {"price": 8, "lot": 3},
"mango": {"price": 12,"lot": 5},
"banana": {"price": 4, "lot": 1}
};
let res = [...document.querySelectorAll("[name=fruits]:checked")]
.map(chk => `${chk.value},lot:${item[chk.value].lot}, price:${item[chk.value].price}`);
document.getElementById("res").innerHTML = res.join("<br/>");
<input type="checkbox" name="fruits" value="lychee" checked> lychee <br />
<input type="checkbox" name="fruits" value="orange"> orange <br />
<input type="checkbox" name="fruits" value="banana" checked> banana <br />
<br/>
<span id="res"></span>

TA貢獻1876條經驗 獲得超7個贊
您可以使用document.querySelectorAll(".fruits:checked")class 獲取所有已檢查的元素.fruits。Set用它的值創建一個對象。
使用filter的過濾器item陣列。
var checked = new Set(Array.from(document.querySelectorAll(".fruits:checked")).map(o => o.value));
const item = [{"lychee":{"price":10,"lot":8}},{"orange":{"price":12,"lot":6}},{"apple":{"price":8,"lot":3}},{"mango":{"price":12,"lot":5}},{"banana":{"price":4,"lot":1}}];
let result = item.filter(o => checked.has(Object.keys(o)[0]));
console.log(result);
<input class="fruits" type="checkbox" name="fruits" value="lychee" checked> lychee <br />
<input class="fruits" type="checkbox" name="fruits" value="orange"> orange <br />
<input class="fruits" type="checkbox" name="fruits" value="banana" checked> banana <br />

TA貢獻1818條經驗 獲得超8個贊
使用過濾器獲取選中的值。
然后映射數組并只取每個對象元素的值。
var checked = [...inputElements].filter(inputElement => inputElement.checked);
var valuesOfChecked = checked.map(item => [Object.values(item)[0].price,Object.values(item)[0].lot])
添加回答
舉報