JQuery 是不是支持字典(键、值)集合?
Posted
技术标签:
【中文标题】JQuery 是不是支持字典(键、值)集合?【英文标题】:Does JQuery support Dictionaries (key, value) collection?JQuery 是否支持字典(键、值)集合? 【发布时间】:2011-07-21 02:32:06 【问题描述】:JQuery 是否支持Dictionaries
(key, value) 集合?
我想在一个结构体中设置以下数据
[1, false]
[2, true]
[3, false]
具有添加、查找、删除和更新的能力。
任何帮助!
【问题讨论】:
javascript 的关联数组有什么问题? 虽然 Javascript 支持字典类型的集合,但为什么不将值存储在数组中,因为您的键是数字的? 您需要存储与 DOM 元素相关的数据还是一般情况下。为什么不能使用简单的 javascript 对象。如果需要针对特定 DOM 元素存储数据,您可以检查出api.jquery.com/jQuery.data 可以使用 Javascript 的JSON
,作为对象数组 ([[1, false],[2, true],[3, false]]
) 或键值关联 (["id": 1, "enabled": false,"id": 2, "enabled": true,"id": 1, "enabled": false]
) 存储所需的结构。但我不确定是否有内置的操作方法。
我不知道我可以用 Javascript 做到这一点。我是初学者。非常感谢。
【参考方案1】:
不,jQuery 没有,但 Javascript 有。
只使用一个对象:
var dict =
"1" : false,
"2" : true,
"3" : false
;
// lookup:
var second = dict["2"];
// update:
dict["2"] = false;
// add:
dict["4"] = true;
// delete:
delete dict["2"];
【讨论】:
非常感谢。小问题:我可以在没有值的情况下初始化它吗? @John:是的,只需省略值:var dict = ;
。
这不是hasOwnProperty
安全的。
@Guffa,基本上这是 JavaScript 的一个缺陷。解决此问题的唯一方法是包装对象并使用安全字典 API 来获取和设置键/值。 map
是一个 ES6 解决方案。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
@user1928158:对象中不可能有重复的键。他们的键"2"
只能有一个值,所以设置它会覆盖以前的值。如果您需要多个键值,请考虑使用数组作为值,即 "1" : [ false ], "2": [ true, false ], "3" : [ false ]
。这当然涉及更多使用和操作对象的代码。另一种选择是使用对象数组,例如[ key: "1", value: false , key: "2", value: true , key: "2", value: false , key: "3", value: false , ]
.【参考方案2】:
jQuery,不。但是 JavaScript 可以。 JavaScript 中只有两种结构,arrays 和 objects。
对象可以用作字典,其中属性是“键”:
var dict =
1: true,
2: true,
3: false
;
对象的属性可以使用点符号obj.property
(如果属性名称是有效标识符,上面使用的数字不是)或数组访问符号obj['property']
。
【讨论】:
你不觉得console.log(dict.1)
是不可能写出来的吗,这很令人困惑,尤其是在以下情况下:var foo = 3: true, 2: true, 1: false; console.log(foo[1]);
@CasparKleijne:不太确定您认为什么令人困惑。你的意思是它可能与数组混淆? Imo 应该始终知道自己正在处理哪种数据结构。
在dict
中为现有密钥添加新条目的语法是什么?考虑到我想将"2" : "false"
添加到var dict = "1" : false, "2" : true, "3" : false ;
【参考方案3】:
您不需要单独的字典类,因为 Javascript 对象充当字典。看到这个:
var userObject = ; // equivalent to new Object()
userObject["lastLoginTime"] = new Date();
alert(userObject["lastLoginTime"]);
全文在这里:http://msdn.microsoft.com/en-us/magazine/cc163419.aspx
【讨论】:
【参考方案4】:使用纯 JavaScript,
var myDictionary = new Object();
myDictionary[1] = false;
myDictionary[2] = true;
myDictionary[3] = false;
function look(i) return myDictionary[i];
look(1); // will return false
【讨论】:
【参考方案5】:是的,您可以使用对象来执行此操作:
var myDict = 1:false , 2:true , 3:false ;
【讨论】:
在dict
中为现有密钥添加新条目的语法是什么?考虑到我想将"2" : "false"
添加到var dict = "1" : false, "2" : true, "3" : false ;
以上是关于JQuery 是不是支持字典(键、值)集合?的主要内容,如果未能解决你的问题,请参考以下文章