use*_*882 25 javascript arrays jquery
我正在使用jQuery,我正在以这种方式处理变量:
var array = {};
array[an_object] = something
array[another_object] = something_else
array[...] = ...
Run Code Online (Sandbox Code Playgroud)
当我尝试运行该splice
方法时,array
我得到一个TypeError: array.splice is not a function
.我的意图是an_object
从array
变量中删除"密钥"及其所有内容.
我该怎么做?
注意:当我运行console.log(array[an_object])
(同样有效another_object
和所有其他对象)时,我得到:
[Object { label="str1", value=1 }, Object { label="str2", value=2 }, { label="strN", value=N }]
Run Code Online (Sandbox Code Playgroud)
Cer*_*rus 21
首先,将变量命名为它们.array
如果您使用它来创建对象,那么您使用的名称会产生误导.
var myObject = {};
myObject[an_object] = "xyz";
myObject[another_object] = "abc";
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用以下delete
语句删除对象中的条目:
delete myObject[an_object]; // Returns true / false if the deletion is a success / failure
console.log(myObject[an_object]) // Returns undefined
Run Code Online (Sandbox Code Playgroud)
现在,说,这不会像你期望的那样工作.myObject[an_object]
将包含"abc"
不要使用对象作为键.请改用字符串.
这是因为输入的任何参数[]
都将转换为字符串.实际上,你正在进入myObject["[object Object]"]
我对你构建对象的方式有点困惑,因为an_object
用作键的键必须是键的字符串值.假设您这样做,这应该通过删除对象的不受欢迎的属性来工作.
var array = {};
array['an_object'] = "something"
array['another_object'] = "something_else"
delete(array.an_object)
console.log(array) // Object { another_object = "something_else" }
Run Code Online (Sandbox Code Playgroud)
编辑
正如注释中所详述的,如果问题是对象被用作另一个对象的键(在这种情况下容易引起混淆array
),那么问题是对象首先被转换为它的字符串表示形式以在对象的上下文中使用键.因此,用作键的所有对象实际上都会引用一个被调用的键[object Object]
,而您用作键的对象将覆盖以前的键.
在问题的例子中......
array[an_object] = something
array[another_object] = something_else
// array: Object { "[object Object]" = "something_else" }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
62812 次 |
最近记录: |