簡體   English   中英

遍歷數組,並非所有項目都顯示

[英]Iterating through array and not all items are showing

在此處查看示例-http: //jsfiddle.net/jayblanchard/b2y1tagk/

使用以下代碼,我認為我會將所有三個元素附加到結果上,但是我沒有。 我得到:

primary - bar secondary - glorp

var elements = [{
        type: 'secondary',
        name: 'foo'
    }, {
        type: 'primary',
        name: "bar"
    }, {
        type: 'secondary',
        name: "glorp"
    }];

    var elementItem;
    $(elements).each(function () {
        if (this.type == 'primary') {
            elementItem = this.type + ' - ' + this.name + '<br />';
        } else {
            elementItem += this.type + ' - ' + this.name + '<br />';
        }
    });
$('#results').append(elementItem);

所以我在考慮將+=運算符添加到if條件的第一部分,但是當我這樣做的時候:

undefinedsecondary - foo primary - bar secondary - glorp

它們生成時的順序無關緊要,完成后它們都必須在那里。 我確定自己缺少明顯的東西,有人可以告訴我那是什么嗎?

elementItem = this.type + ' - ' + this.name + '<br />';

需要是:

elementItem = this.type + ' - ' + this.name + '<br />' + elementItem;

否則,如果primary不是第一項,則將其覆蓋。

var elementItem = "";初始化它var elementItem = ""; 因此它不會將elementItem類型轉換為字符串“ undefined”

http://jsfiddle.net/b2y1tagk/3/

當您達到主要類型時,將用=重置elementItem變量。 嘗試附加列表中的每個項目。 通過var elementItem=''初始化elementItem。

    var elements = [{
        type: 'secondary',
        name: 'foo'
    }, {
        type: 'primary',
        name: "bar"
    }, {
        type: 'secondary',
        name: "glorp"
    }];

    var elementItem = '';
    $(elements).each(function () {
        if (this.type == 'primary') {
            elementItem += this.type + ' - ' + this.name + '<br />';
        } else {
            elementItem += this.type + ' - ' + this.name + '<br />';
        }
    });
$('#results').append(elementItem);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM