![](/img/trans.png)
[英]Push function passing empty objects into array after constructor function Vue JS
[英]Passing array of objects to a js function
我正在尝试第一次在javascript中实现OOP,当我尝试将一个对象数组发送到此函数时,我陷入了递归函数。 所以,我有一些“Pitic”课程(pitic意为罗马尼亚语的侏儒),有一些道具:
function Pitic(piticID) {
this.id = piticID;
this.inaltime = null;
this.greutate = null;
this.genereazaGreutate();
this.genereazaInaltime();
}
我现在正在生成一些小部件并将它们存储在公共的piticiCollection数组变量中。 “genereazaGreutate”和“genereazaInaltime”是为inaltime和greutate值生成随机值的函数。
var pitic = new Pitic(idPitic);
piticiCollection.push(pitic);
当我尝试将midgets数组发送到函数时出现问题,因为我得到的只是数组的第一项。
所以,在我调用函数之前,我有piticiCollection数组有4个对象:midgets 是安全和健全的http://img443.imageshack.us/img443/484/yr4f.png
一旦我用piticiCollection作为参数调用函数,我就会松开3个小部件! :( 大多数小部件都没了http://img201.imageshack.us/img201/5808/7od5.png
请原谅我的英语不好..
[编辑]这是我的完整代码的一个小提琴: http : //jsfiddle.net/WT7Ud/我在第56行调用函数,一旦调试器点击第60行我松散数组项。
我已经通过在函数中使用它之前创建数组的副本来解决我的问题。 奇怪:(
function determinaPerechi(somePitici) {
var piticDeComparat, colectieDePiticiCopy;
colectieDePiticiCopy = somePitici;
for (var i = 1; i < colectieDePiticiCopy.length; i++) {
var piticDeComparat2 = null;
piticDeComparat = colectieDePiticiCopy[0];
piticDeComparat2 = colectieDePiticiCopy[i];
if (piticDeComparat.inaltime < piticDeComparat2.inaltime) {
//Perechea poate fi prietena
}
}
//colectieDePiticiCopy.splice(0, 1);
if (colectieDePiticiCopy.length == 0) {
//alert("finish");
return;
}
determinaPerechi(colectieDePiticiCopy);
//test(ttt);
}
您的determinaPerechiPosibile
正在修改此行上的原始数组:
colectieDePitici.splice(1, colectieDePitici.length);
特别是,它除了第一个元素之外的所有元素。 您可能应该使用slice
来非破坏性地提取要递归的数组部分。
正如Ted Hopp所说,问题似乎就在于此
colectieDePitici.splice(1, colectieDePitici.length);
结合这一行:
determinaPerechiPosibile(colectieDePiticiCopy);
如果这两行被注释掉,则数组保持其原始长度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.