Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 Model - Fatal编程技术网

Javascript对象/数组问题?

Javascript对象/数组问题?,javascript,arrays,object-model,Javascript,Arrays,Object Model,我是javascript对象模型(基于原型)的新手,正在尝试做以下工作: 我有一个简单初始化数组的构造函数:this.myArray=[]。我有一个方法: MyConstructor.prototype.addToArray = function(myObject, type) { // }; 基本上,我需要将myArray附加到特定的类型。也就是说,当调用addToArray()时,对象将被添加到与类型相关联的数组中。我不想提前知道所有可能的类型。我还需要添加清除包含特定类型对象的数组

我是javascript对象模型(基于原型)的新手,正在尝试做以下工作:

我有一个简单初始化数组的构造函数:
this.myArray=[]
。我有一个方法:

MyConstructor.prototype.addToArray = function(myObject, type) {
   //
};
基本上,我需要将
myArray
附加到特定的
类型
。也就是说,当调用
addToArray()
时,对象将被添加到与
类型相关联的数组中。我不想提前知道所有可能的类型。我还需要添加清除包含特定类型对象的数组的方法。所以基本上,我认为我需要以某种方式动态创建与类型关联的数组

任何帮助都将不胜感激

我认为我的问题令人困惑,所以我将尝试详细说明:我的“业务”代码创建了我需要跟踪的对象。每个对象都与特定的“类型”或“风格”相关联。我试图创建一个通用对象,它处理在数组中存储这些对象引用(每种类型一个数组)以及处理这些对象上的操作。然后可以对给定类型的所有对象执行操作。我希望能够在不提前知道类型的情况下做到这一点(即避免在构造函数中为每个类型创建1个数组)


“类型”可以是任何东西。i、 e.字符串“typeA”或“typeB”等。这只是区分不同类对象的一种方式。

如果我正确解释了您的问题,就不可能做您想做的事情,因为JavaScript数组没有类型-您可以在任何数组中放置任何类型的对象

编辑:

根据您的更新,听起来您可以拥有一个属性与对象构造函数名称匹配的对象。每个属性都包含一个数组,该数组保存使用与属性名称匹配的构造函数创建的对象

比如说,

function Cache() {}

Cache.prototype.add = function (obj) {
this[obj.constructor.name] === undefined? this[obj.constructor.name] = [obj] :
this[obj.constructor.name].push(obj);
}

function Constructor1(name, age) {
    this.name = name;
    this.age = age;
}

var cache = new Cache;
var con1 = new Constructor1('me', 10);
cache.add(con1);

console.log(cache) // has property 'Constructor1' containing an array with reference
                   // to object con1 in.

使用这种方法,从对象继承时需要小心并增加构造函数名称。

您可以这样做:

var objects = {};
...
if (objects[type]) {
    objects[type].push(myObject);
} else {
    objects[type] = [myObject];
}
//...similar methods to delete objects, etc.

你的问题令人困惑。JavaScript是动态类型化的,因此您不会从中得到太多不同的东西。您基本上是在谈论创建同质数组,例如,一个数组存储字符串,另一个数组存储数字,等等?您的业务对象是否具有标识其“类型”的属性?将变量设置为{}做什么?这与将其设置为[]有何不同?谢谢{}是一个空对象。我使用它有点像一个关联数组:对于每种类型,它都有一个对象数组[],比如object[type]=[obj1,obj2,…]。这也类似于:object={type1:[obj1,…],type2:[foo,bar,…]};其余部分进入内部,将对象添加到相应的数组中。对不起,我帮不上忙了,我正在手机上打这个…:)嗯……听起来这对我有帮助。我想当我第一次添加某一类型的对象时,我需要检查对象[type]是否已定义,然后创建它,等等。这正是我所选择的解决方案+1.