在大多数情况下,数组返回[object,object]。这是什么意思?

时间:2013-04-03 19:27:18

标签: jquery xml arrays

在下面的例子中,前两个返回[object,object],但第三个返回我对前两个的期望,即“Next”

alert(sceChoicesArr);

alert(sceChoicesArr[0]);

alert(sceChoicesArr[0].text());

这是正在创建的数组:

var sceChoicesArr = [];

$(xml).find('choice').each(function(){sceChoicesArr.push($(this));});

这里是xml在上面一行中寻找的内容:

<choice>Next</choice>

我正在尝试将数组吐出到html中,并且我一直在编写与此页面上的示例相似的内容:Display all items in array using jquery以及:http://jsfiddle.net/chrisabrams/hYQm4/但这些示例都不是似乎能够拉出数组中的值,就像我用警报检查它一样,我得到的只是[对象,对象]

所以我的问题是,[对象,对象]是什么,为什么我得到它而不是“下一步”?

在我看来,我的数组的唯一值应该等于[“Next”]

1 个答案:

答案 0 :(得分:1)

在您的代码中,您使用的是sceChoicesArr.push($(this));。这是将 jQuery对象推送到数组。

alert隐含地使用Object.prototype.toString调用sceChoicesArr,当调用某个对象时,会返回"[object Object]"

而不是使用:

sceChoicesArr.push($(this));

使用:

sceChoicesArr.push($(this).text());

然后以“可读”的形式获取数组:

sceChoicesArr.join(", ")

继续推送$(this),然后获取“可读”表单,请使用:

var readableArr = $.map(sceChoicesArr, function (value, index) {
    return $(value).text();
});

将返回一个只包含每个元素文本的新数组。然后使用:

readableArr.join(", ")

如果您只想查看数组的内容(而不是在其他地方使用它),则可以使用console.log(sceChoicesArr);来提供有用的变量概述。