2011-07-21 67 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是將內容推送到數組末尾的最佳方法。