2014-10-19 91 views
0

我不太確定爲什麼我的代碼運行不正確..我想要做的是創建一個購物清單對象,它有幾個函數來添加和刪除項目.. 我可以實例化新項目的對象,但我的功能似乎不工作的原因。 如果你能救我頭腦裏剩下的幾根頭髮,並告訴我問題在哪裏,我將不勝感激。JavaScript對象函數不起作用

  var groceryList = function(itemNames,quantity) { 
       if (Array.isArray(itemNames)) { 
        this.items = itemNames; 
        this.quantity = quantity 

        this.addItems = function(newItems){ 
         if (Array.isArray(newItems)) { 
          this.items.concat(newItems); 
         } else { 
          console.log("Please enter the items in an array fashion!"); 
         }; 
        }; 

        this.removeItem = function(name) { 
         var listSize = this.items.length; 
         for (var i = 0; i < listSize; i++) { 
          if (this.items[i] == name) { 
           this.items.splice(i,1); 
           break; 
          } else { 
          console.log("Please enter the items in an array fashion!") 
          }; 
         }; 
        }; 
       } else { 
        console.log("Please enter the items in an array fashion!") 
       }; 
      }; 
+0

[ 「CONCAT」 的可能重複不加入JavaScript數組?](http://stackoverflow.com/questions/12810366/concat-does-not-join-javascript-arrays-together) – 2014-10-19 05:55:52

回答

1

.concat()所以你要結果分配回你的實例變量返回一個新的數組。

所以這樣的:

this.items.concat(newItems); 

需要改變這樣:

this.items = this.items.concat(newItems); 

,或者你實際上可以用它來追加到直接數組:

this.items.push.apply(this.items, newItems); 

因爲.push()可以採取多個參數。


然後,在你.removeItem()功能,你需要刪除你實際上改變這個發現該項目:

this.items.splice(2,1); 

這樣:

this.items.splice(i,1); 
+0

「因爲.push()可以採用多個參數。」 - whaaaaaat!你每週都會學到新東西! – Rudie 2014-10-19 02:16:21

+0

非常感謝!我試圖使用'concat()'認爲它的功能與'push()'類似,但你的解釋很明顯。 – WebAhmed 2014-10-19 06:00:50