2011-01-27 105 views
1

我生成這個js在服務器端發送多個陣列和簡單瓦爾所以陣列能有更多的元素

var o = 'hi world'; 
var keys = ['foo','bar']; 
var values = ['foox', 'barzs']; 

如何優化這一部分? :

var data = [{name:'prop', value: o}]; 
data.push({name: 'keys', value: 'foo'}); 
data.push({name: 'keys', value: 'bar'}); 
data.push({name: 'values', value: 'foox'}); 
data.push({name: 'values', value: 'barzs'}); 

$.post('url', $.param(data), ...); 
+0

「優化」是什麼意思? – Pointy 2011-01-27 14:45:01

+0

@Pointy優化=少代碼 – Omu 2011-01-27 14:49:34

回答

1

我不知道,如果用有限的例子你真的優化什麼,但如果你真的有大型數據集,你可以通過一個循環推值...

它又取決於你的意思是通過優化,但我假設你正在處理比你的例子更大的數據集,這意味着必須編寫推送語句的每一個值。

var data = [{name:'prop', value: o}]; 

for (i in keys) { 
    data.push({ name: 'keys', value: keys[i] }); 
} 

for (i in values) { 
    data.push({ name: 'values', value: values[i] }); 
} 
1

我認爲,這是等價的:

$.post('url', { 
    'prop': o, 
    'keys': ['foo', 'bar'], 
    'values': ['foox', 'barzs'] 
}, function() { ... }); 

在一定程度上也取決於你的服務器的期望。一些服務器環境理解將同一個參數的多個實例作爲一個數組參數的HTTP約定,而另一些服務器環境更喜歡參數名稱具有像「keys [0]」,「keys [1]」這樣的顯式內部「索引」等等。也有一些理解。