如何删除键+;javascript中来自哈希的值
给定 如何从散列中删除如何删除键+;javascript中来自哈希的值,javascript,arrays,Javascript,Arrays,给定 如何从散列中删除key2和object 2,使其处于与我所做的一样的状态: var myHash = new Array(); myHash['key1'] = { Name: 'Object 1' }; myHash['key2'] = { Name: 'Object 2' }; myHash['key3'] = { Name: 'Object 3' }; 删除不做我想做的事 var myHash = new Array(); myHash['key1'] = { Name: 'Obj
key2
和object 2
,使其处于与我所做的一样的状态:
var myHash = new Array();
myHash['key1'] = { Name: 'Object 1' };
myHash['key2'] = { Name: 'Object 2' };
myHash['key3'] = { Name: 'Object 3' };
删除不做我想做的事
var myHash = new Array();
myHash['key1'] = { Name: 'Object 1' };
myHash['key3'] = { Name: 'Object 3' };
简单地告诉我:
delete myHash['key2']
我能在splice
和slice
上找到的唯一文档都是关于整数索引器的,我没有
编辑:我也不知道“键2”必须在位置[1]
更新
好了,有点红鲱鱼,从表面上看,delete似乎做了我想做的事情,但是,我使用json2.js将我的对象字符串化为json,以便推回到服务器
删除后,myHash将序列化为:
var myHash = new Array();
myHash['key1'] = { Name: 'Object 1' };
myhash['key2'] = null;
myHash['key3'] = { Name: 'Object 3' };
这是json2.js中的错误吗?或者是我用delete做错了什么
谢谢您正在寻找:
请参见另一个选项可能是此选项。可以更好地满足您的需要。如果您知道数组中的索引。为什么要使用
新数组()代码>用于哈希?您需要改用newobject()
我想你会得到你想要的。你说你不一定知道“键2”在位置[1]。嗯,不是。位置1将由myHash[1]占据
您正在滥用JavaScript数组,它(像函数一样)允许键/值散列。尽管JavaScript允许,但它并没有像为关联数组设计的语言那样为您提供处理它的工具。JavaScript的数组方法只能处理带编号的属性
您应该做的第一件事是切换到对象而不是数组。您没有充分的理由在这里使用数组而不是对象,所以不要这样做。如果您想使用数组,只需对元素进行编号,并放弃散列的想法。数组的目的是保存可以数字索引的信息
当然,如果愿意,您可以将散列(对象)放入数组中
delete myhash['key2']
没有索引正是问题所在Shey@AndrewBullock我有一个查询我得到JSON数组例如:[{“Countrycode\”:\“DE\”,“count\”:“3\”}]但是我想得到像这样的[{“DE”:“3\”],但我没有得到这个输出请帮助我认为这是正确的,这就是为什么我第一次尝试它的原因。这似乎是可行的,我的问题实际上在于Json.stringify,我将使用splice函数更新问题。删除会在阵列中留下一个孔。是前面提到的拼接函数。当对myhash
的更改仅应在当前范围内进行时,这不是最佳选项<如果其他地方的变量引用myhash
对象,code>delete
可能会产生副作用。我一点也不喜欢new。我更喜欢var myHash=[];或者在本例中,myHash={};:-)我同意。数组唯一能给你的是一个长度,当你改变索引器时,这个长度是不起作用的。你要做的是向一个对象添加属性,这与向数组/散列添加元素不同。您正在寻找一种或多或少删除某个属性的方法。尝试删除myHash.key1,如其他注释中所述。如果它是哈希表,则应使用var myHash=new Object()
而不是var myHash=new Array()
。
delete myhash['key2']
myhash[1]={"key1","brightOrangeMonkey"};