JavaScript объект indexOf, вернуть родительскую позицию? - PullRequest
0 голосов
/ 27 июня 2018

Используя indexOf, чтобы найти позицию значения «PO» в объекте, я хочу вместо этого вернуть позицию индекса соответствующего значения «properties». Я считаю, что результат должен быть 1, но я не получаю никакого результата.

Что мне нужно изменить? Это помогло мне в других примерах - хотя я начинающий программист.

myObj = {
    "type":"A",
    "info": [
        { "item":"1", "properties":{ "id":"AL", "height": "25", width: "50" } },
        { "item":"2", "properties":{ "id":"PO", "height": "30", width: "40" } },
        { "item":"3", "properties":{ "id":"RA", "height": "20", width: "100" } }
    ]
}

var myObj, i, j, k, x = "";
for (i = 0; i < myObj.info.length; i++) {
    for (j in myObj.info[i].properties) {
    for (k in myObj.info[i].properties[j].id) {
    x = myObj.info[i].properties[j].id[k];
   	a = x.indexOf("PO");
	if (-1 != a) {
    document.getElementById("test").innerHTML = j;
}
}
    }
    }
<p id="test"></p>

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Другая альтернатива без findIndex ()

var myObj, i, j, k, x = "";

myObj = {
    "type":"A",
    "info": [
        { "item":"1", "properties":{ "id":"AL", "height": "25", width: "50" } },
        { "item":"2", "properties":{ "id":"PO", "height": "30", width: "40" } },
        { "item":"3", "properties":{ "id":"RA", "height": "20", width: "100" } }
    ]
}

myObj.info.forEach(function(e, idx){
 if(e.properties.id == "PO")document.getElementById("test").innerHTML = idx;
});
<p id="test"></p>
0 голосов
/ 27 июня 2018

Просто используйте findIndex ()

const myObj = {
    "type":"A",
    "info": [
        { "item":"1", "properties":{ "id":"AL", "height": "25", width: "50" } },
        { "item":"2", "properties":{ "id":"PO", "height": "30", width: "40" } },
        { "item":"3", "properties":{ "id":"RA", "height": "20", width: "100" } }
    ]
}

const res = myObj.info.findIndex(info => info.properties.id === 'PO');
console.log(res);
...