【问题标题】:Pushing a multiple-attributed item to an array JAVASCRIPT将多属性项推送到数组 JAVASCRIPT
【发布时间】:2012-02-01 14:20:07
【问题描述】:

我有一个这样的数组:

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

但它不起作用。有人有什么建议吗?

【问题讨论】:

  • 对于初学者,您有多个对newCircles 的引用。是对象还是数组?
  • 你试过推入对象而不是字符串表示吗?或者将对象的内容保存到变量中并添加,例如 var obj = {num:...}; newCircles.push(obj);此外,您似乎正在为 $(newCircles).push 使用 jQuery 对象,而在您显示的代码中它不是 jquery 对象 - push 也不是 jquery 函数。萤火虫或任何东西是否显示任何错误?
  • 它正在引用数组'newCircles'中已经存在的项目。
  • firebug 没有错误,我会试试 var obj 的想法。

标签: javascript arrays push


【解决方案1】:

您正在将一个字符串推入数组。 如果您想将另一个对象推入数组中,请执行以下操作

newCircles.push( {
  num: newCircles.length,
  name: 'title ' + newCircles.length,
  x: newCircles[chosenCircle].x,
  y: newCircles[chosenCircle].y,
  color : "#7f38a7",
  r: newCircles[chosenCircle].r
} );

【讨论】:

  • 这对我来说很完美,很多人添加了非常相似的解决方案,如果不完全相同的话。非常感谢!
【解决方案2】:

您正在使用一个字符串,但您想要使用的是 object initializer(通常称为 对象文字),就像您在初始化数组时所做的那样:

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

(也没有理由通过$()。)

当您初始化数组时,: 左侧的标记是属性名称,而右侧表达式的 将被分配为这些属性的值。

【讨论】:

    【解决方案3】:

    试试这个

    newCircles.push( { num:   newCircles.length, 
                       name:  "title "+ newCircles.length, 
                       x:     newCircles[chosenCircle].x, 
                       y:     newCircles[chosenCircle].y, 
                       color: "#7f38a7", 
                       r:     newCircles[chosenCircle].r 
                  }); 
    

    【讨论】:

      【解决方案4】:

      为什么是字符串?你为什么要尝试用 jQuery 包装 newCircles?

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

      【讨论】:

        【解决方案5】:

        使用 push 方法时不需要前导逗号。

        您将对象直接推到数组的末尾。

        另外,不需要将对象包装为字符串。

        $(newCircles).push({ num: "'+newCircles.length+'" [...]});
        

        【讨论】:

          【解决方案6】:

          删除 newCircles 周围的 $()。您希望直接引用该变量,而不是 jQuery 在查找时返回的内容。

          【讨论】:

            【解决方案7】:

            用作

            <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】:

              别担心,如果语法完全错误,javascript 可能无法正常工作;

              newCircles.push({
                  "num":newCircles.length,
                  "a":"someval",
                  "b":"some other val"
              });
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2021-11-13
                • 2013-05-19
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-05-26
                • 1970-01-01
                • 2011-07-07
                相关资源
                最近更新 更多