I want to return from JSON object "mail" for "name" which will be definie by variable C.
var c = "product3"
var text = '{"products":[' +
'{"name":"product1","mail":"[email protected]" },' +
'{"name":"product2","mail":"[email protected]" },' +
'{"name":"product3","mail":"[email protected]" }]}';
In this case i want to return product3 [email protected]
-
what have you already tried? where is your code?llamerr– llamerr2016年04月12日 09:59:02 +00:00Commented Apr 12, 2016 at 9:59
-
2why do you use a string and not an object literal?Nina Scholz– Nina Scholz2016年04月12日 09:59:43 +00:00Commented Apr 12, 2016 at 9:59
5 Answers 5
Using ES2015
let productsArr = JSON.parse(text).products;
let result=productsArr.find(product=>product.name===c);
console.log(result.mail);// output [email protected]
answered Apr 13, 2016 at 7:19
Debabrata Mohanta
6657 silver badges20 bronze badges
Sign up to request clarification or add additional context in comments.
Comments
You can do it with ES6's find easily,
var textObj = JSON.parse(text)
var mail = textObj.products.find(itm => itm.name == c).mail
console.log(mail); // "[email protected]"
DEMO
answered Apr 12, 2016 at 10:00
Rajaprabhu Aravindasamy
67.2k17 gold badges107 silver badges133 bronze badges
Comments
You can use Array.prototype.filter to return only values of your array which have a name === "product3".
var obj = JSON.parse(text);
var c = "product3";
var requiredProduct = obj.products.filter(function(x) {
return x.name === c;
});
answered Apr 12, 2016 at 10:00
Joey Ciechanowicz
3,6733 gold badges30 silver badges49 bronze badges
Comments
var text = '{"products":[' +
'{"name":"product1","mail":"[email protected]" },' +
'{"name":"product2","mail":"[email protected]" },' +
'{"name":"product3","mail":"[email protected]" }]}';
var data = JSON.parse(text);
var data1 = data.products;
console.log(data1[2].name)//get 3rd
console.log(data1[2].mail)//get 3rd
for (var i = 0; i < data1.length; i++) {
console.log(data1[i].name)//iterate here
console.log(data1[i].mail)//iterate here
}
Do it like this
answered Apr 12, 2016 at 10:08
guradio
15.6k4 gold badges39 silver badges65 bronze badges
Comments
first change var text to
var text = {"products": [
{"name":"product1","mail":"[email protected]" },
{"name":"product2","mail":"[email protected]" },
{"name":"product3","mail":"[email protected]" }
]};
var c = text.products[2].name //returns product3
var email = text.products[2].mail //returns [email protected]
Hope this helps.
answered Apr 12, 2016 at 10:12
kweku360
1,0751 gold badge10 silver badges7 bronze badges
Comments
lang-js