JavaScript对象indexOf,返回父位置?

时间:2018-06-27 15:53:34

标签: javascript javascript-objects indexof

我使用indexOf在对象中找到值“ PO”的位置,而我想返回对应的“属性”值的索引位置。我认为结果应该为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 :(得分:2)

只需使用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);

答案 1 :(得分:1)

没有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>