使用jQuery元素对象作为数组键

Use jQuery element object as array key?

本文关键字:数组 对象 jQuery 元素 使用      更新时间:2023-09-26

是否可以将jQuery元素对象用作数组/对象键?

示例:

var el = jQuery(this);
var test = {};
test[el] = "something strange";

做一个:

jQuery.each(test, function(k,v){
    console.log(k);
});

只报告[对象对象]

有没有人说我实际上可以重用k作为原始的jQuery元素对象?

不,这是不可能的。

ECMAscript只允许strings作为对象的键值。


相反,您可以使用来自单个节点的id value。所以它可能看起来像

var el = jQuery(this);
var test = {};
test[this.id] = "something strange";

当然,这需要节点具有一个id值。

使用$.each([],function(i,v)){}时,i是索引,v是值。

当您尝试将对象分配为数组键时,就会看到该对象转换为字符串('[object Object]')。对于简单的散列,可以设想将它们序列化为一个密钥:

var obj = { foo: 'bar' },
    key = JSON.stringify(obj),
    obj2 = { key: 'something strange' };

不过,一般来说,你会想避免这种事情。您可以使用包含对象和消息的并行数组,而不是:

var keys = [ {foo: 'bar'}],
    values = [ 'something strange' ];

我认为您需要定义一个对象,然后推送到数组。

var obj = {};
obj[foo] = 'bar';
ary.push(obj);