最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Pushing a multiple-attributed item to an array JAVASCRIPT - Stack Overflow

programmeradmin3浏览0评论

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
Add a ment  | 

8 Answers 8

Reset to default 6

you 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"
});
发布评论

评论列表(0)

  1. 暂无评论