[英]push associative array error?
经过一些处理后,我必须从另一个数组中推送关联数组中的元素,我正在这样做:
for(var i in this.aNames) {
var a = this.aNames[i];
// some processing on a
aList[i] = a;
aList.push(i);
}
但这并没有给我正确的数组。
编辑:
这里aNames
是一个像这样的关联数组
'1232':'asdasdasd',
'6578':'dasdasdas'
...... and so on of about 100 elements.
我在这里使用for
是因为我想对数组的每个元素进行一些更改。
然后我在页面上显示结果数组,但它与数组数据一起显示键值。
即它应该只显示asdasdasd
或asdasdasd
但它也显示键,如1232 asdasdasd 6578 dasdasdas
。
有很多事情可能 go 错误......
首先,确保this
指向正确的上下文,并且this.aNames
实际上返回一个复杂的 object(关联数组)。
另外,什么是aList
? 它是一个数组吗? 如果是,则应使用当前成员的键(成员名称) push
您的数组 append。
如果要 append 源 object 上成员的值,则需要执行以下操作:
var obj = {name: 'dreas'},
arr = []; // arr is an array
arr.push(obj["name"]); // arr now contains a single element, 'dreas'
在您的for..in
构造中,您既要使用push
向所谓的数组( aList
)添加元素,又要在数组上创建新成员(使用下标表示法, aList[i] = "asd" 因为 i 在这种情况下( for..in 迭代)指的是成员的名字)。
因此,您需要做的是决定是否要将元素添加到数组或将成员添加到 object ,而不是两者。
如果您只想克隆一个数组,请使用for loop
。 另一方面,如果您想克隆 object,这并不是那么简单,因为成员也可以是包含自己成员的复杂对象,并且只需执行arr[i] = obj.member
只会复制指向arr[i]
的指针,如果member
是复杂的 object,而不是值类型。
只是为了确保我的术语是可以理解的:
var anObject = {name: "dreas"},
anArray = [1,2,3];
anObject["name"] <= member (results in "dreas")
anArray[1] <= element (results in 2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.