繁体   English   中英

推送关联数组错误?

[英]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是因为我想对数组的每个元素进行一些更改。

然后我在页面上显示结果数组,但它与数组数据一起显示键值。

即它应该只显示asdasdasdasdasdasd但它也显示键,如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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM