2016-01-24 70 views
-2

我有兩種不同格式的數據結構。轉換對象a以匹配對象b的格式併合並它們JavaScript

第一:

{loginRememberMe: false, test: false} 

第二:

[ 
    { 
    Objectname: "loginEmail", 
    value: "one" 
    }, 
    { 
    Objectname: "loginPassword", 
    value: "two" 
    } 
] 

我想第一個結構相匹配的第二結構的格式轉換,並隨後將它們合併。

這需要使用JavaScript/jQuery的完成,

+2

我格式化你的代碼,因爲它們將出現在語言使結構更容易看到。對你的問題:你能告訴我們一個例子:1)重新格式化後的第一個數據結構應該是什麼樣的,2)合併後的最終數據結構應該看起來像 –

+1

也顯示你所嘗試的......這不是'這個網站的想法是幫助你開發和解決問題的代碼,而不是爲你編寫代碼 – charlietfl

+0

synthet1c正確地理解了這個問題,他的答案足以解決我需要的東西。我現在正在處理它,稍後會發布結果。謝謝 – zachu

回答

1

今後請出示你需要有最終結構。您不能直接將對象與數組合並。

var first = { 
 
    loginRememberMe: false, 
 
    test: false 
 
} 
 

 
var second = [{ 
 
    Objectname: "loginEmail", 
 
    value: "one" 
 
}, { 
 
    Objectname: "loginPassword", 
 
    value: "two" 
 
}] 
 

 
var modifiedArray = addObjectKeysToArray(second, first); 
 

 
console.log(modifiedArray); 
 
console.log(second); 
 
console.assert(second !== modifiedArray, 'both arrays should be different'); 
 

 
function addObjectKeysToArray(arr, obj) { 
 
    // copy the arr so we don't modify the original 
 
    var arrCopy = arr.slice(0); 
 
    // loop through the object properties 
 
    for (var key in obj) { 
 
    if (obj.hasOwnProperty(key)) { 
 
     // add to the copied array 
 
     arrCopy.push({ 
 
     Objectname: key, 
 
     value: obj[key] 
 
     }); 
 
    } 
 
    } 
 
    return arrCopy; 
 
}
<script src="http://codepen.io/synthet1c/pen/WrQapG.js"></script>

+0

謝謝,我正在按照我的需求提供您的服務,而且看起來它可以爲我工作。我將在稍後發佈結果 – zachu

0

您可以使用:

myArray.push({ 
    Objectname: Object.keys(myObject)[0], 
    value: Object.keys(myObject)[1] 
}) 

,如果你想獲得這個數組:

[ 
    { 
    Objectname: "loginEmail", 
    value: "one" 
    }, 
    { 
    Objectname: "loginPassword", 
    value: "two" 
    }, 
    { 
    Objectname: "loginRememberMe", 
    value: "false" 
    } 
] 

和你的對象的數組稱爲myArray和對象你想要合併成數組叫做myObject

檢查演示:Fiddle