从具有值的JSON对象获取索引

这是我的json字符串。

[{ "name": "placeHolder", "section": "right" }, { "name": "Overview", "section": "left" }, { "name": "ByFunction", "section": "left" }, { "name": "Time", "section": "left" }, { "name": "allFit", "section": "left" }, { "name": "allbMatches", "section": "left" }, { "name": "allOffers", "section": "left" }, { "name": "allInterests", "section": "left" }, { "name": "allResponses", "section": "left" }, { "name": "divChanged", "section": "right" }] 

现在,我有值allInterests ,我想在上面的字符串中找到该对象的索引(这种情况;它是’7’)。 我尝试了以下代码; 但它总是返回-1。 有人能帮助我找出我哪里出错了吗?

 var q = MY_JSON_STRING console.log(q.indexOf( 'allInterests' ) ); 

谢谢和问候,Tismon Varghese

您将必须使用Array.findArray.filterArray.forEach

由于您的值是数组而您需要元素的位置,因此您必须迭代它。

Array.find

 var data = [{"name":"placeHolder","section":"right"},{"name":"Overview","section":"left"},{"name":"ByFunction","section":"left"},{"name":"Time","section":"left"},{"name":"allFit","section":"left"},{"name":"allbMatches","section":"left"},{"name":"allOffers","section":"left"},{"name":"allInterests","section":"left"},{"name":"allResponses","section":"left"},{"name":"divChanged","section":"right"}]; var index = -1; var val = "allInterests" var filteredObj = data.find(function(item, i){ if(item.name === val){ index = i; return i; } }); console.log(index, filteredObj); 

您可以使用Array.findIndex。

 var data= [{ "name": "placeHolder", "section": "right" }, { "name": "Overview", "section": "left" }, { "name": "ByFunction", "section": "left" }, { "name": "Time", "section": "left" }, { "name": "allFit", "section": "left" }, { "name": "allbMatches", "section": "left" }, { "name": "allOffers", "section": "left" }, { "name": "allInterests", "section": "left" }, { "name": "allResponses", "section": "left" }, { "name": "divChanged", "section": "right" }]; var index = data.findIndex(obj => obj.name=="allInterests"); 

希望能帮助到你 :)

遍历数组并查找包含键name的元素的索引,并将值作为传递的参数。

 var data = [{ "name": "placeHolder", "section": "right" }, { "name": "Overview", "section": "left" }, { "name": "ByFunction", "section": "left" }, { "name": "Time", "section": "left" }, { "name": "allFit", "section": "left" }, { "name": "allbMatches", "section": "left" }, { "name": "allOffers", "section": "left" }, { "name": "allInterests", "section": "left" }, { "name": "allResponses", "section": "left" }, { "name": "divChanged", "section": "right" }]; Array.prototype.getIndexOf = function(el) { var arr = this; for (var i=0; i