【问题标题】:Javascript: can constructors process an array from a string, then store in the same objectJavascript:构造函数可以从字符串处理数组,然后存储在同一个对象中
【发布时间】:2016-03-15 18:13:55
【问题描述】:

我正在从头开始学习编程,并通过 javascript 将其用于实际任务。我想使用对象构造函数来减少重复代码。我需要帮助的是使用我的代码中未注释的部分来像注释的那样工作。我使用 html 中的 getElementById 来查看我的结果,因为我将使用网页来执行任务。我认为数组“storesArray”是问题所在,但不确定。我将创建许多相同性质的对象,并希望使用构造函数将对象中属性的字符串值转换为数组,然后将其作为数组属性的值存储在同一对象中。不太确定我做错了什么。任何帮助都将受到欢迎。非常感谢

<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>

更新:2016 年 3 月 17 日

我不知道我不需要单独的数组变量来将那串数字转换为数组。谢谢你的快捷方式鲍比。也许一点解释就足够了我的理由亚历克斯/奥玛拉。我的主要目标是重新排列数据。而不是与每个独特的页面广告关联的商店列表,我更喜欢每个独特商店的所有页面的列表。在将页面转换为保留存储数组的对象后,我使用了一个嵌套循环,该循环扫描页面对象数组,然后在每个对象中扫描存储数组。如果存储对象在页面对象的存储数组中找到匹配项,则该页面名称将被推入正在搜索的存储对象数组中。

如果我失去了你,请告诉我。但是我创建一个单独的数组的原因是我不知道如果我没有将局部变量传递给对象的属性,那么它是否会消失,以便稍后可以通过单独的函数对其进行搜索。不知道如何显示我的代码,这个问题不像论坛线程那样工作

但我使用 innerHTML 行作为调试功能,因为我想在制作此应用程序/事物时在网页中显示结果。我还在为我的一个不精通技术/代码的朋友创建这个小工具,因为我们都需要它。 我确信我的代码可以更有效,但我最终会到达那里。我正在向你们所有人学习。我非常感谢您的 cmets 和贡献。

【问题讨论】:

  • 如果您不打算使用storesArray,为什么还要使用它?而是从 storeNumS 生成storesArray?此外,您的 storeNumS 没有显示在 storesArray 中,因为您没有在任何地方调用 this.chgToArray
  • function(this.storeNumS){ 无效,你想在那里做什么?
  • "我想使用对象构造函数来减少重复代码。" - 不要。仅当您需要构造对象时才使用构造函数。使用普通函数来避免重复代码。如果这个东西的全部目的是创建一个数组,只需创建一个返回该数组的函数即可。
  • 谢谢Bergi,我确实需要创建对象。还有很多。我只是想,如果我想通过创建一个对象的新实例来传递信息,我需要确定该对象的数组属性(参数 - 我猜)一开始是空的,但是内部函数(方法)将在稍后填写。它在对象属性中使用数组很难找到答案。数组中的对象和其他任何数组都有大量的在线文档。但由于我是自学,有时会让人感到困惑。

标签: javascript arrays object constructor


【解决方案1】:

问题是你没有在任何地方调用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>

【讨论】:

  • 我刚刚更新了我的问题帖子,并在代码下方给出了回复。感谢您的帮助。
猜你喜欢
  • 2010-12-30
  • 1970-01-01
  • 2020-10-30
  • 1970-01-01
  • 1970-01-01
  • 2017-08-23
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
相关资源
最近更新 更多