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 中只有两种结构,arraysobjects

对象可以用作字典,其中属性是“键”:

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 是不是支持字典(键、值)集合?的主要内容,如果未能解决你的问题,请参考以下文章

字典的操作约束

从字典集合值中查找所有数据到另一个字典集合键

Python字典集合结构详解

Python中字典的键映射多个值(列表或者集合)

字典的学习

Python3字典与集合