0

在以下示例中,前两个返回 [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 中,并且我一直在写出类似于此页面上的示例的内容:使用 jquery 显示数组中的所有项目以及此:http: //jsfiddle.net/chrisabrams/hYQm4 /但这些示例似乎都无法提取数组中的值,因为当我用警报检查它时,我得到的只是 [object, object]

所以我的问题是,什么是 [object, object],为什么我得到它而不是“Next”?

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

4

1 回答 1

1

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

alert隐式调用Object.prototype.toStringwith sceChoicesArr,当在对象上调用时,返回"[object Object]".

而不是使用:

sceChoicesArr.push($(this));

采用:

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

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

sceChoicesArr.join(", ")

或者继续 push $(this),然后得到一个“可读”的形式,使用:

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

这将返回一个新数组,其中仅包含每个元素的文本。然后只需使用:

readableArr.join(", ")

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

于 2013-04-03T19:45:04.990 回答