如何删除键+;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"};