jQuery {}数组如何引用/编辑/更新/删除等等

时间:2012-06-26 11:34:53

标签: jquery arrays edit

考虑以下事项:

 var service_call_array = { 
     3 : 'test',
     4 : 'more of a test eh?',
     5 : 'more info required'
 }; 

我可以循环通过它

$(function() { 
   $.each(service_call_array, function(key, value) {
        alert(key + ':' +value);
   }
});

但原则上我会添加第四项密钥:值,如何通过密钥更新或编辑或更改值(比如密钥:4)如何通过引用密钥删除,以及如何引用键没有循环的元素值?

提前致谢

3 个答案:

答案 0 :(得分:4)

首先,这是一个对象 - 而不是一个数组。数组只能有数字索引,并且具有特殊的语义,例如.length属性。现在,回答你的问题。

你所拥有的是一个普通的旧JavaScript对象,并且你正在为它分配属性。 MDN has a complete page about them.以下是摘要:

访问属性

使用o.keyo["key"]语法,例如:

var object = {
    foo: "bar"
};
alert(object.foo); // displays "bar"

将对象用作查找表时,o["key"]语法特别方便,例如:

var translate = {
    "hello": "bonjour",
    "goodbye": "au revoir"
};
var word = "hello"; // received through some kind of user input
alert(translate[word]); // displays "bonjour"

设置属性

与访问属性类似,但现在将它们放在作业的左侧。该属性是否已存在并不重要,必要时将创建该属性。

var object = {};
object.foo = "bar";
alert(object.foo); // still "bar"

删除属性

使用delete声明。

var object = {
    foo: "bar"
}
alert(object.foo); // displays "bar"
delete object.foo;
alert(object.foo); // displays "undefined"
alert(object.foo === undefined); // displays true

答案 1 :(得分:1)

首先,如果您要使用数字进行索引,请不要使用对象{},请使用数组[]

其次,您添加这样的新项目:

var obj = {};
obj.newItem = 'newItem';        // You can use the dot syntax when your member
                                // name is a valid identifier.
obj['new Item 2'] = 'newItem2'; // Or, you can use the bracket notation if it 
                                // isn't.

var arr = [];
arr[0] = 'firstItem';           // Use the bracket syntax.
arr[42] = 'anotherItem';        // The indices don't have to be contiguous.

访问更新值,您可以使用类似的语法。所有值都是动态的,因此无论您是第一次添加还是更新,它的语法都是相同的:

var a = obj.newItem;            // Access with dot syntax
var b = obj['new Item 2'];      // Access with bracket syntax

obj.newItem = 'updatedValue'    // Update with new value using dot syntax
obj['new Item 2'] = 42          // Update with new value using bracket syntax
                                // Note that the type of the value doesn't have
                                // to remain the same.

要实际删除值,请使用delete关键字:

delete obj.newItem;             // Now, obj.newItem is undefined again.

答案 2 :(得分:1)

您可以通过致电service_call_array.key获得参考,然后您可以使用它更新或执行任何操作。

添加:

service_call_array.key = 'newValue';
service_call_array[key] =  'newValue';

删除:

delete service_call_array.key;
delete service_call_array[key];