2011-07-21 183 views
1

我试图做...JS数组追加

a=['a',2,3]; 
a+=function(){return 'abc'}; 
console.log(a[3]); 

人机工程学我想a.push()的简写方式。

有没有任何一种操作符可以让我做到这一点?

+3

“推”太多以至于无法打字? – Pat

回答

3

否 - 在任何情况下,没有什么不妥:

var a = ['a', 'b', 'c']; 
a.push('d'); 

如果你想要把一个返回值:

a.push((function() { return 'e'; })()); 
2

据我所知你不能做操作符重载,所以这是不可能的。

3

a.push(value)是简写的方式哈哈。另一种方法是a[a.length] = value

+0

这看起来可能并不短,但如果你用'aReallyReallyLongVariableName'来做这件事,不需要(错误地)输入两次是很方便的。 – rakslice

0

可以使用.split()您的字符串转换成数组:

'123'.split(''); 

然后用.concat()追加效果:

a = a.concat('123'.split()) 

当然,你如果你愿意的话,总是可以把它包装在一个函数中。

0

不,ES5 getter-setters让您拦截任务=但有没有运营商超载,以允许拦截并重新解释++=

如果您知道要添加的内容是单个原始值,则可以伪造它。

var appendable = { 
    x_: [1, 2], 
    get x() { return this.x_; }, 
    set x(newx) { this.x_.push(newx.substring(("" + this.x_).length)); } 
}; 

alert(appendable.x); 
appendable.x += 3; 
alert(appendable.x); // alerts 1,2,3 not 1,23 
alert(appendable.x.length); 

但实际上,.push是将内容推送到数组末尾的最佳方法。