簡體   English   中英

使用JavaScript / AngularJS將數組轉換為對象

[英]Convert array to objects using JavaScript/AngularJS

我需要將父數組中的轉換數組轉換為與我的數據庫模型數據匹配的對象。

我有這樣的數組:

emails: Array[2] 
0: "example@mail.com"
1: "otherexample@mail.com"
id: 1 
firstname: "Jane"
lastname: "Doe

我想要實現的是將電子郵件數組轉換為對象數組,如下所示:

    emails: Array[2] 
    0: 
{
name: "example@mail.com"
}
    1: 
{
name: "otherexample@mail.com"
}
    id: 1 
    firstname: "Jane"
    lastname: "Doe

我試圖使用此代碼將數組轉換為對象但由於某種原因它失敗(沒有數據顯示 - >變量rv為空):

 var rv = {};
        for (var i = 0; i < dbInfo.emails.length; ++i)
            if (dbInfo.emails[i] !== undefined) rv[i] = dbInfo.emails[i];

有人知道我的代碼失敗的原因,有人知道這類問題的解決方案嗎?

謝謝你。

這是Array.prototype.map函數的完美用法:

dbInfo.emails = dbInfo.emails.map(function(e) {
    return { name: e };
});

即只是將數組( e )的每個單獨元素轉換為對象{ name: email }

我覺得你在尋找什么是angular.extend。 有關angular.extend的好文章請點擊這里 有關文檔,請單擊此處

var newObj = {};
angular.extend(newObj,[Array here]);

您正在將電子郵件放入對象中。 相反,您希望將每個電子郵件包裝在其自己的對象中,並將其放回到數組中。

for (var i = 0; i < dbInfo.emails.length; ++i) {
    if(dbInfo.emails[i] !== undefined) {
        dbInfo.emails[i] = { name: dbInfo.emails[i] };
    }
}

這項工作完美//選項選擇

  var range = [];
    for (var i=1; i<$scope.totalItems+1; i++) {
      range.push({value:i});
    }  

  console.log(range);

暫無
暫無

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

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