I have an array set out like this:
var newCircles = [{
num: 0,
name: "title0",
x: 280,
y: 200,
color: "#555555",
r: 60
},
{
num: 1,
name: "title1",
x: 480,
y: 200,
color: "#555555",
r: 80
}];
And I'm trying to push new set of information like this:
$(newCircles).push(', { num: "'+newCircles.length+'", name : "title "'+(newCircles.length)+'", x : "'+newCircles[chosenCircle].x+'", y : "'+newCircles[chosenCircle].y+'", color : "#7f38a7", r : "'+newCircles[chosenCircle].r+'" }');
But it's not working. Anyone have any suggestions?
I have an array set out like this:
var newCircles = [{
num: 0,
name: "title0",
x: 280,
y: 200,
color: "#555555",
r: 60
},
{
num: 1,
name: "title1",
x: 480,
y: 200,
color: "#555555",
r: 80
}];
And I'm trying to push new set of information like this:
$(newCircles).push(', { num: "'+newCircles.length+'", name : "title "'+(newCircles.length)+'", x : "'+newCircles[chosenCircle].x+'", y : "'+newCircles[chosenCircle].y+'", color : "#7f38a7", r : "'+newCircles[chosenCircle].r+'" }');
But it's not working. Anyone have any suggestions?
Share Improve this question edited Feb 1, 2012 at 14:26 user1106925 asked Feb 1, 2012 at 14:20 FeeneyFeeney 3572 gold badges4 silver badges12 bronze badges 4-
For starters, you have multiple references to
newCircles
. Is it a object or array? – OptimusCrime Commented Feb 1, 2012 at 14:23 - 1 have you tried pushing the object in rather than a string representation? Or save the contents of the object to a variable and add that e.g var obj = {num:...}; newCircles.push(obj); Also you seem to be using a jQuery object for $(newCircles).push whereas it's not a jquery object in your code shown - push also isn't a jquery function. Does firebug or anything show any errors? – TommyBs Commented Feb 1, 2012 at 14:23
- It is referencing already existing items in the array 'newCircles'. – Feeney Commented Feb 1, 2012 at 14:26
- No errors from firebug, i'll give the var obj idea a go. – Feeney Commented Feb 1, 2012 at 14:27
8 Answers
Reset to default 6you are pushing a string into the array. if you want to push another object into the array, then do so by
newCircles.push( {
num: newCircles.length,
name: 'title ' + newCircles.length,
x: newCircles[chosenCircle].x,
y: newCircles[chosenCircle].y,
color : "#7f38a7",
r: newCircles[chosenCircle].r
} );
You're using a string, but what you want to use is an object initializer (frequently called an object literal), just like you did when you initialized your array:
newCircles.push({
num: newCircles.length, // Or you more likely want `newCircles.length + 1`
name: "title " + (newCircles.length), // Again, probably +1
x: newCircles[chosenCircle].x,
y: newCircles[chosenCircle].y,
color: "#7f38a7",
r: newCircles[chosenCircle].r
});
(There's also no reason for passing it through $()
.)
As when you initialized your array, the tokens to the left of the :
are the property names, and the value of the expressions on the right will be assigned as those properties' values.
Try this instead
newCircles.push( { num: newCircles.length,
name: "title "+ newCircles.length,
x: newCircles[chosenCircle].x,
y: newCircles[chosenCircle].y,
color: "#7f38a7",
r: newCircles[chosenCircle].r
});
Why is that a string? And why are you trying to wrap newCircles with jQuery?
newCircles.push({ num: newCircles.length, x: newCircles[chosenCircle].x, ... });
You don't need the leading ma when using the push method.
You're pushing the object directly onto the end of the array.
Also, there's no need to wrap the object up as a string.
$(newCircles).push({ num: "'+newCircles.length+'" [...]});
Remove the $() around newCircles. You want the direct reference to that variable, not what jQuery returns when it looks it up.
use as
<script>
var newCircles = [
{
num: 0,
name: "title0",
x: 280,
y: 200,
color: "#555555",
r: 60
},
{
num: 1,
name: "title1",
x: 480,
y: 200,
color: "#555555",
r: 80
}
];
newCircles.push({"num":"10","name":"name","x":"100","y":"100","color":"color","r":"r"});
console.log(newCircles);
</script>
Don't worry, javascript may not work correctly if the syntax is totally wrong;
newCircles.push({
"num":newCircles.length,
"a":"someval",
"b":"some other val"
});