2016-03-15 57 views
0

我正在學習從頭開始編程,並通過javascript將它用於實際任務。我想使用對象構造函數來減少重複代碼。我需要幫助的是使用我的代碼的非評論部分來像所評論的那樣工作。我在html中使用getElementById來查看我的結果,因爲我將使用網頁執行任務。我認爲數組「storesArray」是問題,但不確定。我將創建許多具有相同屬性的對象,並希望使用構造函數將對象中屬性的字符串值轉換爲數組,然後將其作爲數組屬性的值存儲在同一對象中。不太確定我做錯了什麼。任何幫助將受到歡迎。許多感謝Javascript:構造函數可以從一個字符串處理數組,然後存儲在同一個對象中

<body> 
<p id="display1"><p/> 
</body> 
<script type="text/javascript"> 

function page(name, storesArray, storeNumS) { 
    this.name = name;        
    this.storesArray = [];       
    this.storeNumS = storeNumS;      
    this.chgToArray = function(this.storeNumS){ 
     this.storesArray = this.storeNumS.split(" "); 
     return; 
    }; 
} 

var _001_01 = new page("_001_01", [], "01 03 05 56 87 06 07"); 
document.getElementById("display1").innerHTML = _001_01.storesArray; 

/* //Code below shows result i'd like. Code above is a constuctor version of below 
var _001_01 = { 
    name: "xyz_001_01", 
    storesArray: [], 
    chgToArray: function(storeNumS){    
    _001_01.storesArray = storeNumS.split(" "); 
    } 
}; 

_001_01.chgToArray("01 03 05 56 87 06 07"); 
document.getElementById("display1").innerHTML = _001_01.storesArray; 
*/ 
</script> 
</html> 

更新:March17.2016

我不知道,我並不需要一個單獨的數組變量轉數的該字符串到一個數組。感謝那個捷徑Bobby。也許一點解釋可能足以我的理由亞歷克斯/奧馬拉。我的主要目標是重新排列數據。而不是與每個獨特的PAGE廣告相關的STORES列表,我更喜歡每個獨特STORE的所有PAGE列表。在將頁面轉換爲保存商店數組的對象後,我使用了一個嵌套循環掃描頁面對象數組,然後在每個對象中掃描商店數組。如果商店對象在頁面對象的商店數組中找到匹配項,那麼該名稱將被推送到正被搜索的商店對象的數組中。

讓我知道如果我失去了你。但是,我做了一個單獨的數組的原因是我不知道如果我沒有將它傳遞給對象的屬性,局部變量會消失,以便稍後可以通過單獨的函數進行搜索。不知道如何我可以顯示我的代碼,這個問題的東西不會像論壇主題那樣工作

但我使用innerHTML線作爲調試功能,因爲我想顯示結果在網頁當我做這個應用程序/ thingy。我也爲我的一個朋友創建了這個小工具,因爲我們都需要它,所以他們不是技術/代碼精明的人。 我確信我的代碼可以更有效率,但我最終會到達那裏。我正在學習你們所有的堆。我非常感謝您的意見和貢獻。

+0

爲什麼storesArray是一個參數,如果你不打算使用它?而是從storeNumS生成storesArray?另外,storeNumS不會顯示在storesArray中,因爲您不在任何地方調用this.chgToArray。 –

+0

'function(this.storeNumS){'無效,你想在那裏做什麼? –

+1

「*我想使用對象構造函數來減少重複代碼。*」 - 不要。只有在需要構造對象時才使用構造函數。使用正常的函數來避免重複代碼。如果這個東西的全部目的是創建一個數組,那麼只需要創建一個返回這個數組的函數,而不是別的。 – Bergi

回答

0

問題是你沒有撥打chgToArray任何地方,如果你想自動調用這個,只需將this.storesArray屬性設置爲storeNumS.split()的結果。

此外,我刪除storesArray作爲構造函數的參數,因爲您沒有在提供的代碼中的任何位置使用它,只需將其添加回來即可,如果您有計劃使用它。

<script type="text/javascript"> 

function page(name, storeNumS) { 
    this.name = name; 
    this.storeNumS = storeNumS; 
    this.storesArray = storeNumS.split(" ") 
} 

var _001_01 = new page("_001_01", "01 03 05 56 87 06 07"); 
document.getElementById("display1").innerHTML = _001_01.storesArray; 

/* //Code below shows result i'd like. Code above is a constuctor version of below 
var _001_01 = { 
    name: "xyz_001_01", 
    storesArray: [], 
    chgToArray: function(storeNumS){ 
    _001_01.storesArray = storeNumS.split(" "); 
    } 
}; 

_001_01.chgToArray("01 03 05 56 87 06 07"); 
document.getElementById("display1").innerHTML = _001_01.storesArray; 
*/ 
</script> 
+0

我剛剛更新了我的問題帖子,並在代碼下方顯示了回覆。謝謝你的幫助。 – theUnlearned

相關問題