从具有值的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.find
或Array.filter
或Array.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