[英]Merging Arrays Using Javascript
如果之前已经在这里问过这个问题,我很抱歉,但我找不到它。
我无法将两个 arrays 合并在一起,我是 javascript 的绝对初学者。
我需要在纯 javascript 中执行此操作,并且不使用任何库代码。
这是代码;
var greetings = [
'Hello',
'Bonjour',
'Ola',
],
names = {
'One': 'Bill',
'Two': 'John',
'Three': 'Paul',
};
我希望结果在无序列表中显示为以下内容,并且每个语句都在其中自己的单独列表项;
<ul>
<li>Hello Bill</li><br/>
<li>Bonjour John</li><br/>
<li>Ola Paul</li><br/>
</ul>
如果有人能回答这个问题,并评论代码,这样我就可以理解它是如何工作的,那将是完美的。
使用for-in
语句时不能保证枚举的顺序。
因此,您需要有一个单独的数组来指定顺序。
var greetings = [
'Hello',
'Bonjour',
'Ola',
],
names = {
'One': 'Bill',
'Two': 'John',
'Three': 'Paul',
},
order = [
'One',
'Two',
'Three'
],
items = [];
for( var i = 0, len = order.length; i < len; i++ ) {
items.push( greetings[i] + ' ' + names[ order[i] ] );
}
document.body.innerHTML = ( "<ul><li>" + items.join("</li><li>") + "</li></ul>" );
但这会很痛苦。 您应该改用 2 Arrays。
示例: http://jsfiddle.net/rktyF/1/
编辑:我摆脱了<br>
因为它是不必要的。
用于... in,例如如下:
var i = 0, lst = [];
for(pos in names) {
lst.push(greetings[i++] + " " + names[pos]);
}
我不明白{ 'One': 'Bill', 'Two': 'John', 'Three': 'Paul', }
... 为什么不[ 'Bill', 'John', 'Paul' ]
?
如果你这样做,它将是:
var ul = document.createElement( 'ul' ),
li;
for ( var i = 0, l = greetings.length; i < l; ++i ) {
li = document.createElement( 'li' );
li.innerHTML = greetings[ i ] + ' ' + names[ i ];
ul.appendChild( li );
}
我希望你的意思是..
names = ['Bill', 'John', 'Paul'];
..因为您在问题中显示的names
不是数组。 这是一个 object。
另外,为了将来参考,数组从 0 开始,而不是 1,所以..
names[1];
..会是约翰,尽管比尔是第一个。
var i = 0, // Arrays start at 0.
ul = document.createElement('ul'), // Create the unordered list.
greetings = [ 'Hello', 'Bonjour', 'Ola' ], // Make some greetings.
names = [ 'Bill', 'John', 'Paul' ]; // Make some names.
for (; i < names.length; i++) {
var li = document.createElement('li'); // Create a list item.
li.innerHTML = greetings[i] + ' ' + names[i]; // Set the HTML.
ul.appendChild(li); // Make the list item part of the list.
};
document.body.appendChild(ul); // Put the list inside the body of the document.
那应该行得通。
我在这里设置了一个演示。
似乎@patrick 击败了我的一般解决方案,但无论如何我都会把它留在这里:
var greetings = [
'Hello',
'Bonjour',
'Ola'
],
names = {
'One': 'Bill',
'Two': 'John',
'Three': 'Paul'
};
var words = ["One", "Two", "Three", "Four", "Five",
"Six", "Seven", "Eight", "Nine"];
var i, greet;
var ul = document.createElement("ul");
for (i = 0; greet = greetings[i++];) {
var li = document.createElement("li");
li.appendChild(document.createTextNode(
greet + " " + names[words[i]]))
ul.appendChild(li);
}
您现在可以将ul
插入到 DOM 中相应的 position 中。 其结构:
<ul>
<li>Hello John</li>
<li>Bonjour Paul</li>
<li>Ola undefined</li>
</ul>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.