如何:在js中插入值的push()函数

时间:2012-02-13 10:33:06

标签: javascript jquery google-maps push

我试图使用谷歌地图API,我被困在这里:

  • 我需要一个数组变量(waypts),其中包含特定格式的某些值。
  • 我什么时候推动'我的waypts变量中的值只返回" OBJECT"作为它的价值。
  • 我需要它来推送所选输入文本中设置的实际值。

使用jQuery和javascript(核心)

代码:

<html>
<head>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
        $('document').ready(function(){
            var waypts = [];
            var temp = $('input.boom').map(function(){
                return $(this).val();
            });

            for (var i=0;i<temp.length;i++){
                waypts.push({
                    location:temp[i].value,
                    stopover:true
                });
            }
            alert(waypts);
        });
    </script>
</head>
<body>
    <input type="text" class="boom" value="boom1"><br>
    <input type="text" class="boom" value="boom2"><br>
    <input type="text" class="boom" value="boom3"><br>
    <input type="text" class="boom" value="boom4"><br>
</body>
</html>

4 个答案:

答案 0 :(得分:3)

在您当前的代码中,waypts将是一个对象数组,每个对象都具有location属性和stopover属性。

您可以将代码更改为以下内容以使其更清晰;

var waypts = $('input.boom').map(function(){
     return {
        location: $(this).val(),
        stopover: true
     };
}).get();

// waypts is now an array of objects with `location` and `stopover` attributes.
// you can see what each value is by alerting `waypts[i].location` and `waypts[i].stopover`.

答案 1 :(得分:2)

您需要提醒数组的属性

尝试提醒路标[0] .location

要显示对象数组的所有项,请执行以下操作:

var output="";
for (var o in waypts) {
  if (waypts.hasOwnProperty(o) {
    output += "\n"+o+":"+waypts[o].location + '-' + waypts[o].stopover;
  }
}
alert(output)

或标准数组(就像我读到你的问题时那样)

var output="";
for (var i=0, n=waypts.length;i<n;i++) {
  output += "\n"+i+":"+waypts[i].location + '-' + waypts[i].stopover;
}
alert(output)

或使用jQuery

var output="";
$.each(waypts, function(i,item) {
  output+= i+':'+item.location+'-'+item.stopover;
});
alert(output)

答案 2 :(得分:1)

waypts数组中的每个元素都是一个对象 - 您需要单独引用对象中的每个值。尝试用此替换alert(waypts)以查看数组中的所有数据:

for (var i = 0; i <= waypts.length; i++) {
    alert(waypts[i].location);
    alert(waypts[i].stopover);
}

答案 3 :(得分:0)

当你说

waypts.push({
                location:temp[i].value,
                stopover:true
            });

您正在将新的文字对象(包含在{}中)推送到waypts

因此,您要将新项目添加到这些位置/中途停留对象的数组中。

要实际引用locationstopover值,您需要首先使用waypts索引[](例如waypts[0]将指向第一个此类对象)。其次,您需要引用所需的属性,locationstopover。您可以使用标准的“点表示法”执行此操作。例如,waypts[0].location会为您提供waypts数组中第一项的位置值。