从JavaScript中的对象数组中获取对象
对不起,我觉得这是一个愚蠢的问题,我搜索了很多,我找不到我的答案。从JavaScript中的对象数组中获取对象
我有一个JavaScript中的数组,我插入了一堆元素。麻烦的是我不能再获取元素的值,我想我得到了实际数组的属性。以下是我正在做的和我正在做的事情。先谢谢您的帮助。这不是完整的遍历方法,它实际上经历了很多次。当我以前刚刚拥有一个关联数组[items] [a]时,它可以很好地工作。
var element = { html: "", group: "" };
var array = [];
function traverse(o) {
for (var key in o) {
element.html = "<li class='item'>" + key + " : </li>";
element.group = b;
array.push(element);
}
}
我想打印每个元素的html,问题是我每次只从第一个元素获取.html。
function printElements() {
for (item in array) {
var element = array.pop();
console.log(element.html);
}
}
我也试过了。
function printElements() {
for (item in array) {
console.log(array.html);
}
}
我想保持数组完整,我不想弹出和我只想打印它们的元素。
的主要问题ISN不能将数据从数组中取出,它从不首先进入数组。
你没有一堆数组中的元素,你只有一个元素,你改变并添加到数组中。当你把它放在数组中时,它不会被复制,它只是对放置在数组中的元素的引用。你最终会得到一个数组,其中引用了相同的单个元素。
创建的循环每次迭代的新元素,当你填充它:
for (var key in o) {
var element = {};
element.html = "<li class='item'>" + key + " : </li>";
element.group = b;
array.push(element);
}
转,这是我的问题。当打印数组时,我一直得到相同的值,所以我想我只是访问数组的属性而不是其中的对象。原来我只是没有创建一个新的元素。感谢您的参与,并感谢您的帮助。 – recneps 2013-04-23 16:34:03
使用一个简单的for循环,而不是:
for (var i = 0; i < array.length; i++) {
var item = array[i];
// do stuff
}
这是不妥当的使用更好的for循环语法对数组在JavaScript中,因为他们将通过所有键/值对数组中只是重复,不数组数字键。这是因为数组也是对象,并且for ... in循环语法不区分它们。
这样来做:
var array = [];
function traverse(o) {
for (var key in o) {
var b = 'b'; // if that is what you have ment
var element = { html : "<li class='item'>" + key + " : </li>", group : b};
array.push(element);
}
}
function printElements() {
for (var item=0; item<array.length; item++) {
console.log(array[item].html);
}
}
这是因为它是不是安全的用于每个数组的情况下,你应该有每个数组元素的新对象。 请确保不要在数组元素上使用删除。
在数组中使用'for-in'会导致JavaScript中的错误。 – 2013-04-23 16:23:58