Перенос объекта с несколькими атрибутами в массив JAVASCRIPT - PullRequest
1 голос
/ 01 февраля 2012

У меня есть такой массив:

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: "'+newCircles.length+'", name : "title "'+(newCircles.length)+'", x : "'+newCircles[chosenCircle].x+'", y : "'+newCircles[chosenCircle].y+'", color : "#7f38a7", r : "'+newCircles[chosenCircle].r+'" }');

Но это не работает. У кого-нибудь есть предложения?

Ответы [ 8 ]

3 голосов
/ 01 февраля 2012

вы помещаете строку в массив.если вы хотите вставить другой объект в массив, сделайте это с помощью

newCircles.push( {
  num: newCircles.length,
  name: 'title ' + newCircles.length,
  x: newCircles[chosenCircle].x,
  y: newCircles[chosenCircle].y,
  color : "#7f38a7",
  r: newCircles[chosenCircle].r
} );
2 голосов
/ 01 февраля 2012

Вы используете строку, но вы хотите использовать инициализатор объекта (часто называемый литерал объекта ), так же, как вы делали это при инициализации массива:

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

(также нет причин для его передачи через $().)

Как и при инициализации массива, токены слева от : являются именами свойстви значение выражений справа будет назначено в качестве значений этих свойств.

1 голос
/ 01 февраля 2012

Попробуйте вместо этого

newCircles.push( { num:   newCircles.length, 
                   name:  "title "+ newCircles.length, 
                   x:     newCircles[chosenCircle].x, 
                   y:     newCircles[chosenCircle].y, 
                   color: "#7f38a7", 
                   r:     newCircles[chosenCircle].r 
              }); 
0 голосов
/ 01 февраля 2012

использовать как

<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>
0 голосов
/ 01 февраля 2012

Удалите $ () вокруг newCircles. Вам нужна прямая ссылка на эту переменную, а не на то, что возвращает jQuery при ее поиске.

0 голосов
/ 01 февраля 2012

Вам не нужна начальная запятая при использовании метода push.

Вы помещаете объект прямо в конец массива.

Кроме того, нет необходимости заключать объект в строку.

$(newCircles).push({ num: "'+newCircles.length+'" [...]});
0 голосов
/ 01 февраля 2012

Не волнуйтесь, JavaScript может работать некорректно, если синтаксис неверен;

newCircles.push({
    "num":newCircles.length,
    "a":"someval",
    "b":"some other val"
});
0 голосов
/ 01 февраля 2012

Почему это строка? И почему вы пытаетесь обернуть новые круги с помощью jQuery?

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