簡體   English   中英

JavaScript對應

[英]Javascript mapping

在我們的項目中,我們從數據庫中獲取以下格式的數據。

[
    [
        "ClearDB",
        "test1@test.com",
        "com.test.cleardb"
    ],
    [
        "Cricbuzz",
        "test2@test.com",
        "com.test.cricbuzz"
    ],
    [
        "Hangout",
        "test3@test.com",
        "com.test.hangout"
    ]
]

我想要以下所述的鍵值格式

[
    {
        "projname": "ClearDB",
        "projmanager": "test1@test.com",
        "package": "com.test.cleardb"
    },
    {
        "projname": "Cricbuzz",
        "projmanager": "test2@test.com",
        "package": "com.test.cricbuzz"
    },
    {
        "projname": "Hangout",
        "projmanager": "test3@test.com",
        "package": "com.test.hangout"
    }
]

請為我提供實現此目標的正確方法。

您可以簡單地為每個數組創建一個新對象,並使用map函數創建一個對象數組,如下所示

var keys = ["projname", "projmanager", "package"];

console.log(data.map(function (arr) {
  var obj = {};
  keys.forEach(function (key, idx) { obj[key] = arr[idx]; });
  return obj;
}));

輸出量

[ { projname: 'ClearDB',
    projmanager: 'test1@test.com',
    package: 'com.test.cleardb' },
  { projname: 'Cricbuzz',
    projmanager: 'test2@test.com',
    package: 'com.test.cricbuzz' },
  { projname: 'Hangout',
    projmanager: 'test3@test.com',
    package: 'com.test.hangout' } ]

Array.prototype.map

var results = db.map(function (v) {
  return {
     projname: v[0],
     projmanager: v[1],
     package: v[2]
  };
});

如果

var array =[
[
    "ClearDB",
    "test1@test.com",
    "com.test.cleardb"
],
[
    "Cricbuzz",
    "test2@test.com",
    "com.test.cricbuzz"
],
[
    "Hangout",
    "test3@test.com",
    "com.test.hangout"
]
];

然后

var obj = [];
array.each(function(item){ obj.push({"projname": item[0],
                                      "projmanager":item[1], 
                                      "package": item[2]})
});

編輯:

使用jQuery

var obj = [];
$.each(array,function(key,value){ obj.push({"projname": value[0],
                                      "projmanager":value[1], 
                                      "package": value[2]})
});

使用JavaScript

var obj = [];
array.forEach(function(item){ obj.push({"projname": item[0],
                                      "projmanager":item[1], 
                                      "package": item[2]})
});

假設您從數據庫獲取的數據存儲在變量“ abc”中

var abc = [];
var output = [];
for(var i = 0; i< abc.length; i++){
    output[i] = {};
    output[i].projname = abc[i][0];
    output[i].projmanager = abc[i][1];
    output[i].package = abc[i][2];
}

注意:“ abc”是用於存儲數據庫數據的變量。

在ES6中:

input . map(([projname, projmanager, package]) => ({projname, projmanager, package}));

[]的部分將參數map分解為map ,后者是子數組之一,將第一個元素分配給projname ,依此類推。 {}的部分創建並返回鍵值為'projname'的對象,其值為projname等。

如果要對此進行概括以使用任何字段名稱數組( ['projname', 'projmanager', 'package'] ):

input . map(
  values => 
    values . reduce(
      (result, value, i) => {
        result[fieldnames[i]] = value;
        return result;
      },
      {}
    )
);

暫無
暫無

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

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