2013-10-10 108 views
2

的每個陣列元素我有這樣添加索引以JavaScript

[2003, 5010, 4006, 5007, 2003, 5010] 

陣列我使用該指令來提取特定的列,它給上述輸出

// profiles is a multidimensional array 
var pofileIds = profiles.map((el) => el.TargetProfileId) 

現在我想的這樣

[{ ids : 2003}, { ids : 5010 },{ ids : 4006 },{ ids : 5007 },{ ids : 2003 }] 

或者這

01輸出
ids=2003&ids=5010&ids=4006&ids=5007&ids=2003 

我正在研究現有項目,無法更改此項目。我需要調用asp.net服務來返回所需的數據。該應用程序正在網絡上工作,我正在努力將其轉換爲手機,但我必然會使用與網絡相同的移動服務。

+2

什麼是(el)=> el。TargetProfileId'?這看起來不像Javascript。它是Coffeescript嗎? – Barmar

+0

爲什麼不簡單地循環數組並創建所需的格式? – iJade

+0

@Barmar它確實是JavaScript,你可以在小提琴上測試 –

回答

0

嘗試:

profiles.map(el => ({ ids: el.TargetProfileId })) 

Understanding ECMAScript 6 arrow functions

因爲大括號是用來表示該函數的身體,想要返回一個函數體的對象文本外,必須換一個箭頭功能括號中的文字。

+0

我已經測試它正在產生問題 –

+0

你應該在問題中這麼說。它產生了什麼問題? – Barmar

+0

顯示的值未定義 –

-1

純JS應該是很容易的:

var myArray= [2003, 5010, 4006, 5007, 2003, 5010], 
myObject, 
myResponse = []; 
for (var index in myArray) 
{ 
    myObject = new Object(); 
    myObject.ids = myArray[index]; 
    myResponse.push(myObject); 
} 

//Output in the console for double check 
console.log (myResponse); 
+0

不要在數組中使用'for ... in ...'! – Alnitak

+0

如果您願意,您可以使用for(var index = 0; index

+0

這不是一個「偏好」的問題,使用'for ... in'基本上是_incorrect_。 – Alnitak

1

當我使用(el) => ...我得到一個錯誤。 請嘗試像這樣

var arr = [2003, 5010, 4006, 5007, 2003, 5010]; 

var profileIds = arr.map(function (elem) { 
    return { "ID": elem }; 
}); 
0

感謝您給出的答案和您的時間。順便說一下,我發現了一些簡單的解決方案,我在這裏發佈。

這是我的陣列

[2003, 5010, 4006, 5007, 2003, 5010] 

首先,我使用從用戶jsonscript該指令。但我不得不修改了一點

var pofileIds = profiles.map((el) => { return { "ids": el.TargetProfileId }}) 

這會產生這樣的結果

[Object {ids=2003}, Object {ids=5010}, Object {ids=4006}, Object {ids=5007}, Object {ids=2003}, Object {ids=5010}] 

然後使用jQuery $.param

pofileIds = pofileIds.map((el) => $.param(el)) 

輸出

["ids=2003", "ids=5010", "ids=4006", "ids=5007", "ids=2003", "ids=5010"] 

最後的JavaScriptĴ OIN

pofileIds = pofileIds.join("&") 

輸出

ids=2003&ids=5010&ids=4006&ids=5007&ids=2003&ids=5010 

希望它可以幫助別人。