Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
119
rated 0 times [  120] [ 1]  / answers: 1 / hits: 49265  / 12 Years ago, mon, august 6, 2012, 12:00:00

Currently I get back a JSON response like this...



{items:[
{itemId:1,isRight:0},
{itemId:2,isRight:1},
{itemId:3,isRight:0}
]}


I want to perform something like this (pseudo code)



var arrayFound = obj.items.Find({isRight:1})


This would then return



[{itemId:2,isRight:1}]


I know I can do this with a for each loop, however, I am trying to avoid this. This is currently server side on a Node.JS app.


More From » json

 Answers
113
var arrayFound = obj.items.filter(function(item) {
return item.isRight == 1;
});


Of course you could also write a function to find items by an object literal as a condition:



Array.prototype.myFind = function(obj) {
return this.filter(function(item) {
for (var prop in obj)
if (!(prop in item) || obj[prop] !== item[prop])
return false;
return true;
});
};
// then use:
var arrayFound = obj.items.myFind({isRight:1});


Both functions make use of the native .filter() method on Arrays.


[#83811] Sunday, August 5, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
kamronr

Total Points: 749
Total Questions: 110
Total Answers: 122

Location: Dominica
Member since Sat, Nov 5, 2022
2 Years ago
kamronr questions
Mon, Dec 21, 20, 00:00, 3 Years ago
Fri, Oct 16, 20, 00:00, 4 Years ago
Sat, Oct 3, 20, 00:00, 4 Years ago
Sun, Jul 28, 19, 00:00, 5 Years ago
;