Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:构造函数可以处理字符串中的数组,然后存储在同一个对象中吗_Javascript_Arrays_Object_Constructor - Fatal编程技术网

Javascript:构造函数可以处理字符串中的数组,然后存储在同一个对象中吗

Javascript:构造函数可以处理字符串中的数组,然后存储在同一个对象中吗,javascript,arrays,object,constructor,Javascript,Arrays,Object,Constructor,我从零开始学习编程,并通过javascript将其用于实际任务。我想使用对象构造函数来减少重复代码。我需要帮助的是使用我代码中未注释的部分来像注释一样工作。我在html中使用getElementById来查看结果,因为我将使用网页来执行任务。我认为数组“storesArray”是问题所在,但不确定。我将创建许多具有相同性质的对象,并希望使用构造函数将对象中某个属性的字符串值转换为数组,然后将其作为同一对象中某个数组属性的值存储。不太清楚我做错了什么。欢迎任何帮助。非常感谢 <body>

我从零开始学习编程,并通过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>

功能页(名称、storesArray、storeNumS){ this.name=名称; this.storesArray=[]; this.storeNumS=storeNumS; this.chgToArray=函数(this.storeNumS){ this.storesArray=this.storeNumS.split(“”); 返回; }; } var_001_01=新页面(“_001_01”[],“01 03 05 56 87 06 07”); document.getElementById(“display1”).innerHTML=\u 001\u 01.storesArray; /*//下面的代码显示了我想要的结果。上面的代码是下面的构造函数版本 变量_001_01={ 名称:“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=\u 001\u 01.storesArray; */

更新:2016年3月17日

我不知道我不需要一个单独的数组变量来将这串数字转换成数组。谢谢你的捷径,鲍比。也许一点解释就足以说明我的理由Alex/O'Mara。我的主要目标是重新排列数据。与每个独特页面广告关联的商店列表不同,我更喜欢每个独特商店的所有页面列表。在将页面转换为保存一个存储阵列的对象之后,我使用了一个嵌套循环,该循环扫描页面对象的阵列,然后在每个对象中扫描存储阵列。如果store对象在页面对象的store数组中找到匹配项,则该页面名称将被推送到要搜索的stores对象数组中

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

但我使用innerHTML行作为调试功能,因为我想在制作此应用程序/内容时在网页中显示结果。我还为我的一个朋友创建了这个小工具,他不懂技术/代码,因为我们都需要它。
我相信我的代码会更有效,但我最终会达到目的的。我从你们身上学到了很多东西。我非常感谢您的评论和贡献。

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

功能页(名称、storeNumS){
this.name=名称;
this.storeNumS=storeNumS;
this.storesArray=storeNumS.split(“”)
}
var_001_01=新页面(“_001_01”,“01 03 05 56 87 06 07”);
document.getElementById(“display1”).innerHTML=\u 001\u 01.storesArray;
/*//下面的代码显示了我想要的结果。上面的代码是下面的构造函数版本
变量_001_01={
名称:“xyz_001_01”,
storesArray:[],
chgToArray:功能(storeNumS){
_001_01.storesArray=storeNumS.split(“”);
}
};
_001_01.chgToArray(“01 03 05 56 87 06 07”);
document.getElementById(“display1”).innerHTML=\u 001\u 01.storesArray;
*/

如果您不打算使用storesArray,为什么它会成为一个参数?而是从storeNumS生成storesArray?另外,您的storeNumS没有显示在storesArray中,因为您没有在任何地方调用
this.chgToArray
函数(this.storeNumS){
无效,您想在那里做什么?“我想使用对象构造函数来减少重复代码。”-不要。只有在需要构造对象时才使用构造函数。使用普通函数以避免重复代码。如果这件事的全部目的是创建一个数组,只需创建一个返回该数组的函数,而不需要其他任何东西。感谢Bergi,我真的需要创建对象。还有很多对象。我只是想,如果我想传递信息,我需要n通过创建一个对象的新实例,我需要确定该对象的数组属性(参数-我猜)一开始是空的,但是intertal函数(方法)稍后将对此进行补充。在对象属性中使用数组很难找到答案。数组中的对象以及其他任何数组中的对象都有大量的在线文档。但由于我自己学习,有时会感到困惑。我刚刚更新了我的问题帖子,在代码下面给出了回答。感谢您的帮助。