Reputation: 33
var node = {
node: {
name: "someone1",
city: "somewhere1",
state: "someplace1"
},
node : {
name: "someone2",
city: "somewhere2",
state: "someplace2"
},
node : {
name: "someone3",
city: "somewhere3",
state: "someplace3"
}
};
console.log(JSON.stringify(node.node));
//Output is {"name":"someone3","city":"somewhere3","state":"someplace3"}
but I need whole data like when I enter node.name..All names should display
Upvotes: 1
Views: 83
Reputation: 281726
You should not keep object having properties with same name, keys within an object should be kept unique. You can have an array and loop over it
var node = [
{
name: "someone1",
city: "somewhere1",
state: "someplace1"
},{
name: "someone2",
city: "somewhere2",
state: "someplace2"
}, {
name: "someone3",
city: "somewhere3",
state: "someplace3"
}
]
node.forEach(function(item){
console.log(item.name);
})
Update: setting value to input considering you nested object as pointed out in comments.
You need recursion to find all the names in the nested object
$(function(){
var node = {
"id": "429428",
"name": "something",
"state": {
"filter": "98887"
},
"node": {
"id": "49888",
"name": "something2",
"state": {
"filter": "48765"
},
"node": {
"id": "428866",
"name": "something3",
"state": {
"filter": "998898"
}
}
}
}
var arr = [];
function getValues(node, arr) {
for (prop in node) {
console.log(prop);
if(prop == "name") {
arr.push(node[prop]);
}
if(prop == "node") {
getValues(node[prop], arr)
}
}
}
getValues(node, arr)
console.log(arr.join(" "));
document.getElementById('ip').value = arr.join(" ");
})
<input type="text" id="ip"/>
Upvotes: 3
Reputation: 2591
Run snippet for answer and example!
var nodeObject = {
innernode1: {
name: "someone1",
city: "somewhere1",
state: "someplace1"
},
innernode2: {
name: "someone2",
city: "somewhere2",
state: "someplace2"
},
innernode3: {
name: "someone3",
city: "somewhere3",
state: "someplace3"
}
};
var nodeArray = [{
name: "Bob",
city: "Milwaukee",
state: "Narnia"
},
{
name: "Jim",
city: "Boston",
state: "Mass."
},
{
name: "Joe Dohn",
city: "The International Space Station",
state: "Space"
}
];
for(var i=0;i<nodeArray.length;i++){
document.getElementById("list").innerHTML+="<li>"+nodeArray[i].name+" lives in "+nodeArray[i].city+", "+nodeArray[i].state+"</li>";
}
<p>Look at how the inner <code>node</code> within the outer <code>node</code> object is defined 3 times in your code. The last one will overwrite all the previous ones.</p>
<p>Try giving each node a different name, or making an array.</p>
<p>Here's an example of outputting all values from the array version, which I would personally recommend:</p>
<ol id="list">
</ol>
Upvotes: -1
Reputation: 1658
You should change your data-structure.
Variant 1: array
var node = [
{
name: "someone1",
city: "somewhere1",
state: "someplace1"
},
{
name: "someone2",
city: "somewhere2",
state: "someplace2"
},
{
name: "someone3",
city: "somewhere3",
state: "someplace3"
}
];
console.log(JSON.stringify(node));
Variant 2: object
var node = {
node1: {
name: "someone1",
city: "somewhere1",
state: "someplace1"
},
node2 : {
name: "someone2",
city: "somewhere2",
state: "someplace2"
},
node3 : {
name: "someone3",
city: "somewhere3",
state: "someplace3"
}
};
console.log(JSON.stringify(node));
Upvotes: 0
Reputation: 2366
Declare your node var like this:
var node= { node: [{ name: "someone1", city: "somewhere1", state: "someplace1" }, { name: "someone2", city: "somewhere2", state: "someplace2" }, { name: "someone3", city: "somewhere3", state: "someplace3" }]};
Then you can print it with:
console.log(JSON.stringify(node));
It will output:
{"node":[{"name":"someone1","city":"somewhere1","state":"someplace1"},{"name":"someone2","city":"somewhere2","state":"someplace2"},{"name":"someone3","city":"somewhere3","state":"someplace3"}]}
Upvotes: 1
Reputation: 8825
var node = [
{
name: "someone1",
city: "somewhere1",
state: "someplace1"
}, {
name: "someone2",
city: "somewhere2",
state: "someplace2"
}, {
name: "someone3",
city: "somewhere3",
state: "someplace3"
}
]
Upvotes: 1