以下问题:
我有一个数组:
var klassen = new Array();
klassen[0] = new Object();
klassen[0]["class"] = "barbarian";
klassen[0]["con"] = "0";
klassen[0]["str"] = "0";
klassen[1] = new Object();
klassen[1]["class"] = "bard";
klassen[1]["chr"] = "0";
klassen[1]["dex"] = "0"; '''
我有一个功能:
function changecs(){
let csclass = document.getElementById("class")
window.finden = csclass.value;
alert(finden);
highlight();
}
function highlight(){
alert(finden);
let indexzahl = klassen.indexOf('finden')
alert (indexzahl);
}
此功能链接到HTML选择(我包括了必要的内容:
<div id="class-frm">
<label for="class">Choose a Class</label>
<select id="class" onchange="changecs()">
<option id="default" value="default"> Optional </option>
<option id="barbarian" value="barbarian"> Barbarian </option>
<option id="bard" value="bard"> Bard </option>
我的目标是选择例如吟游诗人。然后我想知道在该示例中“ bard”的索引号将为1。我希望这足够精确。 谢谢!
答案 0 :(得分:0)
for(let i=0; i<klassen.length; i++){
const element = klassen[i];
const keys = Object.keys(element);
keys.forEach(key => {
if(element[key] === 'bard'){
console.log(klassen.indexOf(element))
}
});
// you can use a flag and break here
}
答案 1 :(得分:0)
使用Array.prototype.fineIndex()
:
const klassen = [{'class': 'barbarian', con: 0, str: 0}, {'class': 'bard', chr: 0, dex: 0}]
function changecs({target:{value}}){
const itemPosition = klassen.findIndex(item => item.class == value)
console.log(itemPosition)
}
<label for="class">Choose a Class</label>
<select id="class" onchange="changecs(event)">
<option id="default" value="default"> Optional </option>
<option id="barbarian" value="barbarian"> Barbarian </option>
<option id="bard" value="bard"> Bard </option>
</select>