[英]Find matching object position in array
Following Problem:以下问题:
I have a Array:我有一个数组:
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"; '''
And i have a function:我有一个功能:
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);
}
This function is linked to a Html select ( i included the necessary:这个函数链接到一个 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>
My goal is it, to select something for example bard.我的目标是,选择一些东西,例如吟游诗人。 Then i want to know the index number of "bard" which would be 1 in this example.然后我想知道“吟游诗人”的索引号,在本例中为 1。 I hope this is precise enough.我希望这足够精确。 Thanks!谢谢!
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
}
Use Array.prototype.fineIndex()
:使用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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.