Pushing a multiple-attributed item to an array JAV

2019-06-06 08:20发布

问题:

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?

回答1:

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
} );


回答2:

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.



回答3:

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 
              }); 


回答4:

Why is that a string? And why are you trying to wrap newCircles with jQuery?

newCircles.push({ num: newCircles.length, x: newCircles[chosenCircle].x, ... });


回答5:

You don't need the leading comma 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+'" [...]});


回答6:

Remove the $() around newCircles. You want the direct reference to that variable, not what jQuery returns when it looks it up.



回答7:

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>


回答8:

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"
});