如何正确使用array.push?

时间:2012-11-23 11:41:46

标签: javascript

var send_value = [current_site_id, current_site_name, current_site_description];
console.log(send_value);
send_value = jQuery(this).is(':checked') ? send_value.push('add') : send_value.push('delete');
console.log(send_value);

结果是

  

[“12”,“qwrqweqwer”,“qwreqwr”] 4

我哪里错了?

PS。 对不起,我的错误在于send_value =,无法理解它是如何到达的那样

3 个答案:

答案 0 :(得分:3)

此行send_value = jQuery(this).is(':checked') ? send_value.push('add') : send_value.push('delete');push返回值分配给send_value,它不会推送任何内容。返回值是数组对象的新长度as you can see in the specifications

试试这个:

send_value.push(jQuery(this).is(':checked') ? 'add' : 'delete');

推送你的三元组的结果值如果你发现它更具可读性,你可以把你的三元组变成一个表达式,而不是一个语句:

(jQuery(this).is(':checked') ? send_value.push('add') : send_value.push('delete'));//<-- notice surrounding parentheses

但是,坦率地说,如果你担心可读性,最好一起消除三合一的恕我直言。

答案 1 :(得分:3)

推送完成后,

push返回数组的长度。试试这个:

var send_value = [current_site_id, current_site_name, current_site_description];
console.log(send_value);
send_value.push( jQuery(this).is(':checked') ? 'add' : 'delete' );
console.log(send_value);

此外,您应该使用对象而不是数组。 send_value.site_id的读数优于send_value[0] ...

答案 2 :(得分:1)

var result = jQuery(this).is(':checked') ? 'add' : 'delete';
    send_value.push(result);