繁体   English   中英

使用 Javascript 合并 Arrays

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM