如何实现这样一个关联数组?

arr[key] = value;

其中, key是一个jQuery对象和value是一个数组。

--------------解决方案-------------

关联数组并没有真正在JavaScript存在。 但是,您可以使用JavaScript对象实现类似的功能:

// Create object
var myObject = {
key: value,
helloText: "Hello World!"
};

// Access object in some statement via:
myObject.helloText
// ...or:
myObject["helloText"]

要使用一个对象作为一个键,你就必须做一些事情,如:

var a = {
helloText: "Hello World!"
};

var b = {};
b[a] = "Testing";

alert(b[a]); // Returns "Testing" (at least, in Safari 4.0.4)

使用一个对象作为重点听起来有点不可思议,但。 你确定你需要做的呢?

更新:

不能真正使用对象为在JavaScript中的一个关键。 上面的代码似乎工作的原因是,在声明b[a] = "Testing";的转换a通过为字符串a.toString()这会导致"[object Object]"并使用此字符串作为重点。 因此,我们的声明实际上是b["[object Object]"] = "Testing";而我们的警示语句是完全一样alert(b["[object Object]"]);

由于CMS指出这一点在评论!

更新2:

蒂姆下指出,他的JavaScript库jshashtable允许你使用一个对象作为重点。

您可以使用jshashtable,这使得作为重点任何JavaScript对象。

只是猜测这里,但似乎你想一些(任意)数据与jQuery对象(可能是一个因素)相关联。 在这种情况下,为什么不使用的data ()方法?

$('#el').data (value);

您不能使用对象作为键,和assocative数组不表里如一在Javascript中,因为你正在做的是通过设置一个属性的数组对象上,当你遍历.length它本身不占手动定义设置属性。

我建议存储对象文本的内部元素和数组,里面所有的阵列。 例如:

var list = [
{
el:document.body,
arr:[1,2]
}
];

for ( var i = 0, l = list.length; i<l; ++i ) {
alert( list[i]['el'] )
alert( list[i]['arr'][0] )
}

// add elements to the array

list.push({
el:document.body.firstChild,
arr:[3,4]
})

由于kprime在他的回答中提到,虽然,它可能是最好使用.data()如果你正在使用Javascript。

if ( !$(el).data('key') ) {
$(el).data('key', [2,3,4] );
}

我建议分配一个唯一的ID,你想放的关联容器(对象JS),每一个元素,并使用该ID的关键:

var idCounter = 0;
var container = { };
function storeValue(element, value) {
if (!element.getAttribute('id')) {
element.setAttribute('id', makeID());
}
var id = element.getAttribute('id');
container[id] = value;
}
function makeID() {
return 'unique-id-' + idCounter++;
}

编辑:该解决方案假设jQuery是不可用。 如果是,用data('key', value)

每一个JavaScript对象是关联数组,这是一个属性构建的语言,你不需要什么特别的,只是用它像

分类:JavaScript的 时间:2015-03-15 人气:0
本文关键词: JavaScript中,数组和jQuery
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.262 (s). 10 q(s)