19

Beats 配列にアイテムを追加してからユーザーを console.log にすると、配列内の正しい数のアイテムが取得されます。しかし、.length をチェックすると、常に 1 になります。インデックスを呼び出そうとすると、次のように常に「未定義」 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]);
4

3 に答える 3

52

Array.push(...)リストに追加する複数の引数を取ります。それらを配列自体に入れると、まさにこの「ビート」の配列が追加されます。

Array.concat(...)既存の配列に追加する代わりに新しい配列を生成するため、探しているものではない可能性があります。

[].push.apply(Array, arg_list)引数リストの項目を追加するために使用できます。

this.addBeats = function(beats) { 
    return [].push.apply(this.beats, beats);
};
于 2012-06-17T23:48:24.043 に答える
1

addBeats() は this.beats を Beats パラメータと連結する必要があります。

于 2012-06-17T23:41:36.380 に答える