2016-01-24 52 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