簡體   English   中英

將兩個數組合並為一個javascript對象

[英]Merge two arrays into one javascript object

我有一系列數據。 a有10個字段,在b有10個字段

var a = [ "siddharth", "sid", "anything", "something", "nothing", ]
var b = [ "23", "67", "10", "10", "90" ]

我想創建一個JSON從這些陣列作為a為關鍵和b的值,如下圖所示:

{  "siddharth" : "23",  "sid" : "67" }

如何使用javascriptjquery實現此目的。 我目前的代碼是

 var convert = '{'+datatest.columnHeaders[i].name +":"+datatest.rows[0][i]+'}';
         pair   = convert;/*JSON.stringify(convert);*/
         array.pairArray.push(pair);

假設兩個數組的長度始終相同:

var obj = {}
for (var i = 0; i < a.length; i++) {
    //or check with: if (b.length > i) { assignment }
    obj[a[i]] = b[i]
}

 var a = [ "siddharth", "sid", "anything", "something", "nothing" ]; var b = [ "23", "67", "10", "10", "90" ]; var c = {}; $.each( a, function(i,v) { c[ v ] = b[ i ]; }); $('body').append( JSON.stringify(c) ); //Output: {"siddharth":"23","sid":"67","anything":"10","something":"10","nothing":"90"} 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 

您可以創建普通對象並將其用作映射容器:

var a = [ "siddharth", "sid", "anything", "something", "nothing" ];
var b = [ "23", "67", "10", "10", "90" ];
var obj = {};
for ( i = 0; i < a.length; i++) {
    obj[a[i]] = b[i];
}
alert(JSON.stringify(obj));

有關更多信息,請參閱如何在JavaScript中創建哈希或字典對象

此示例等於tymeJVs示例,但對數組使用forEach循環。 對我來說它看起來更短。

var obj = {};
a.forEach(function(item, i) {
    obj[item] = b[i];
});
console.log(JSON.stringify(obj)); // {"siddharth":"23","sid":"67","anything":"10","something":"10","nothing":"90"}

您需要在名稱和值周圍使用引號,否則您最終會得到一個像{siddharth:23,sid:67}這樣的字符串:

 // mock the data var datatest = { columnHeaders: [ { name: "siddharth" }, { name: "sid" }, { name: "anything" }, { name: "something" }, { name: "nothing" } ], rows: [[ "23", "67", "10", "10", "90" ]] }; var json = '{'; for (var i = 0; i < datatest.columnHeaders.length; i++) { if (i > 0) json += ','; json += '"' + datatest.columnHeaders[i].name + '":"' + datatest.rows[0][i] +'"'; } json += '}'; // show result in StackOverflow snippet document.write(json); 

最短的我可以使用ES6胖箭頭功能,映射,減少和計算屬性名稱

 var a = ["siddharth", "sid", "anything", "something", "nothing", ] var b = ["23", "67", "10", "10", "90"] const mergeArrToJSON = (a, b) => a .map((item, i) => ({[item]: b[i]})) .reduce((json,val)=>Object.assign({},json,val)) console.log(mergeArrToJSON(a, b)) 

如果您願意添加另一個着名的第三方JavaScript實用程序庫

Lodash,使用zipObject

_.zipObject(a, b);

下划線,使用對象

_.object(a, b);

如果您可以隨意使用其他插件

UNDERSCORE

是你在找什么

_.object(['moe', 'larry', 'curly'], [30, 40, 50]);
=> {moe: 30, larry: 40, curly: 50}

單行代碼。 只包括這個js

https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM