Найти подходящую позицию объекта в массиве - PullRequest
0 голосов
/ 24 февраля 2020

Следующая проблема:

У меня есть массив:

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>

Моя цель состоит в том, чтобы выбрать что-то, например, Бард. Тогда я хочу знать индексный номер "Бард", который будет 1 в этом примере. Я надеюсь, это достаточно точно. Спасибо!

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

Использование 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>
0 голосов
/ 24 февраля 2020
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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...