2016-03-15 58 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

相关问题