簡體   English   中英

.push()多個對象進入JavaScript數組返回'undefined'

[英].push() multiple objects into JavaScript array returns 'undefined'

當我向beats數組添加項目然后console.log用戶時,我在數組中獲得了正確數量的項目。 但是當我檢查.length時,我總是得到1.嘗試調用索引總是會給我'undefined',就像這樣: Tom.beats[1]我想我錯過了一些明顯的東西,但這是打敗了我。 我懷疑我濫用.push方法,但我不確定。 任何幫助是極大的贊賞! (使用Chrome開發工具)

//The USER

function User(name, role){
    this.beats = [ ]; 

    this.name = name;
    this.role = role;

    // add beats to beats array

    this.addBeats = function(beats){ 
        return this.beats.push(beats);
   };

}

// Three New Instances. Three New Users.

var Mal = new User("Mal", "Rapper");
Mal.addBeats(["love", "cash"]);

var Dan = new User("Dan", "Producer");
Dan.addBeats(["cake", "dirt", "sally-mae"]);

var Tom = new User("Tom", "Producer");
Tom.addBeats(["Fun", "Little", "Samsung", "Turtle", "PC"]);

// Check for position in beats array

console.log(Tom.beats); 
console.log(Mal.beats); 
console.log(Dan.beats); 

console.log(Mal.beats[1]);
console.log(Dan.beats[1]);
console.log(Tom.beats[1]);

Array.push(...)將多個參數附加到列表中。 如果你把它們放在一個數組中,那么這個“beats”數組就會被追加。

Array.concat(...)很可能不是你想要的,因為它生成一個新數組而不是附加到現有數組。

您可以使用[].push.apply(Array, arg_list)追加參數列表的項目:

this.addBeats = function(beats) { 
    return [].push.apply(this.beats, beats);
};

傳播運營商

在支持傳播運算符的環境中,您現在可以執行以下操作:

this.addBeats = function (beats) {
    return this.beats.push(...beats);
};

或者如果你需要更多的控制來覆蓋等

this.addBeats = function(beats) { 
    return this.beats.splice(this.beats.length, null, ...beats);
};

addBeats()應該使用beats參數連接this.beats。

暫無
暫無

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

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