JQuery find match value in multidimensional array / object

How to write this script correctly so that I can map the value to an object.

var objGroup = [ { "color": "YELLOW", "number": "11,7,44,22" }, { "color": "BLUE", "number": "8,20,9" }, { "color": "GREEN", "number": "12,34,55" } ]; objGroup.map(function (groupNum) { if (groupNum.number== "11") { alert(groupNum.color); } else { return null } });​ 
+4
source share
1 answer

This will return an object with a numeric value containing the specified number.

 var objGroup = [ { "color": "YELLOW", "number": "11,7,44,22" }, { "color": "BLUE", "number": "8,20,9" }, { "color": "GREEN", "number": "12,34,55" } ]; var found = findItem(objGroup, '11'); function findItem(array, value) { for (var i = 0; i < array.length; i++) { if (array[i].number.split(',').indexOf(value) >= 0) { return objGroup[i]; } } } if (found) { alert(found.color); } 

http://jsfiddle.net/rVPu5/

An alternative using the newer .filter function, which will not be supported so widely:

 var found = objGroup.filter(function(item) { if (item.number.split(',').indexOf('11') >= 0) { return true; } return false; }); if (found.length > 0) { alert(found[0].color); } 

http://jsfiddle.net/rVPu5/2/

Finally is the jQuery version:

 var found = $.map(objGroup, function(item) { if (item.number.split(',').indexOf('11') >= 0) { return item; } }); if (found.length > 0) { alert(found[0].color); } 

http://jsfiddle.net/rVPu5/3/

+8
source

Source: https://habr.com/ru/post/1433982/


All Articles