我在JavaScript中有一个插入一堆元素的数组。麻烦的是我无法将元素的值取回,我想我得到的是实际数组的属性。以下是我正在做的和我想做的事情。在此先感谢您的帮助。这不是完整的遍历方法,它确实经历了很多次。当我以前只有一个关联数组项[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);
}
}
我想保持数组完整,我不想弹出和我只想打印它们的元素。
答案 0 :(得分:1)
主要问题不是从数组中获取数据,而是首先进入数组。
数组中没有一堆元素,只有一个元素可以更改并一遍又一遍地添加到数组中。当你把它放在数组中时它没有被复制,它只是对放在数组中的元素的引用。最终会得到一个充满对同一个元素的引用的数组。
在填充时为循环中的每个迭代创建一个新元素:
for (var key in o) {
var element = {};
element.html = "<li class='item'>" + key + " : </li>";
element.group = b;
array.push(element);
}
答案 1 :(得分:0)
使用简单的for循环:
for (var i = 0; i < array.length; i++) {
var item = array[i];
// do stuff
}
在JavaScript中对数组使用更好的for循环语法是不可取的,因为它们将遍历数组中的所有键/值对,而不仅仅是数组数字键。这是因为数组也是对象,并且for ... in循环语法不区分它们。
答案 2 :(得分:0)
你没有使用迭代对象,而是使用数组......改变这个:
function printElements() {
for (item in array) {
console.log(array.html);
}
}
到此:
function printElements() {
for (item in array) {
console.log(array[item].html);
}
}
答案 3 :(得分:0)
这样做:
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);
}
}
这是因为在数组的情况下使用它们并不安全,并且每个数组元素都应该有新对象。 一定不要在数组元素上使用delete。