我使用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>
答案 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>