簡體   English   中英

繼續從數組添加項目,直到結束循環

[英]Continue add items from array until end loop

我有一個這樣的對象:

var Object = {
        "id": "Siplus",
        "name":"Siplus",
        "icon":"forum"
      },
      {
        "id": "Recent",
        "name":"Recent Activities",
        "icon": "restore"
      },
      {
        "id": "jobList",
        "name":"Job List",
        "icon": "briefcase"
      },
      {
        "id": "Favourites",
        "name":"Favourites",
        "icon": "star"
      },
      {
        "id": "searchQuote",
        "name":"Search Quotes",
        "icon": "binoculars"
      },
      {
        "id": "orderStatus",
        "name":"Order Status",
        "icon": "clock"
      };

我有另一個這樣的數組

var array = [1,2,3];

我使用以下代碼將數組值添加到對象:

for (var i = 0; i < object.length; i++) {
    object[i].number = array[i];
  }

我得到這樣的結果:

var Object = {
            "id": "Siplus",
            "name":"Siplus",
            "icon":"forum",
            "number":1
          },
          {
            "id": "Recent",
            "name":"Recent Activities",
            "icon": "restore",
            "number":2
          },
          {
            "id": "jobList",
            "name":"Job List",
            "icon": "briefcase",
            "number":3
          },
          {
            "id": "Favourites",
            "name":"Favourites",
            "icon": "star",
            "number":undefined
          },
          {
            "id": "searchQuote",
            "name":"Search Quotes",
            "icon": "binoculars",
            "number":undefined
          },
          {
            "id": "orderStatus",
            "name":"Order Status",
            "icon": "clock",
            "number":undefined
          };

我想要這樣:

var Object = {
            "id": "Siplus",
            "name":"Siplus",
            "icon":"forum",
            "number":1
          },
          {
            "id": "Recent",
            "name":"Recent Activities",
            "icon": "restore",
            "number":2
          },
          {
            "id": "jobList",
            "name":"Job List",
            "icon": "briefcase",
            "number":3
          },
          {
            "id": "Favourites",
            "name":"Favourites",
            "icon": "star",
            "number":1
          },
          {
            "id": "searchQuote",
            "name":"Search Quotes",
            "icon": "binoculars",
            "number":2
          },
          {
            "id": "orderStatus",
            "name":"Order Status",
            "icon": "clock",
            "number":3
          };

他們有什么辦法得到重復的數字,而不是得到“未定義”

請幫我

借助模運算,您可以通過從數組添加正確的值來映射輸入對象

 var data = [{ "id": "Siplus", "name":"Siplus", "icon":"forum" }, { "id": "Recent", "name":"Recent Activities", "icon": "restore" }, { "id": "jobList", "name":"Job List", "icon": "briefcase" }, { "id": "Favourites", "name":"Favourites", "icon": "star" }, { "id": "searchQuote", "name":"Search Quotes", "icon": "binoculars" }, { "id": "orderStatus", "name":"Order Status", "icon": "clock" }]; var array = [1,2,3]; res = data.map((x,i) => { x.number = array[i % array.length] return x; }) console.log(res); 

array的大小是3,而對象的大小更大-一種解決方案是使用:

object[i].number = array[i % array.length];

請參見下面的演示:

 var object=[{"id":"Siplus","name":"Siplus","icon":"forum"},{"id":"Recent","name":"Recent Activities","icon":"restore"},{"id":"jobList","name":"Job List","icon":"briefcase"},{"id":"Favourites","name":"Favourites","icon":"star"},{"id":"searchQuote","name":"Search Quotes","icon":"binoculars"},{"id":"orderStatus","name":"Order Status","icon":"clock"}] var array = [1, 2, 3]; for (var i = 0; i < object.length; i++) { object[i].number = array[i % array.length]; } console.log(object); 
 .as-console-wrapper{top:0;max-height:100%!important;} 

您可以使用其他var。

for (var i = 0, j = 0; i < object.length; i++) {
    j++
    if(j > array.length){j=0}
    object[i].number = array[j];
}
var arrLength = array.length;
for (var i = 0, j = 0; i < object.length; i++, j++) {
    if (i >= arrLength ) {
        j = 0;
    }
    object[i].number = array[j];
}

您可以使用一個臨時值指向數字數組,如下所示:

var temp = 0;
for (var i = 0; i < object.length; i++) {
    object[i].number = array[temp];
    if(temp == array.length)
         temp = 0;
    else
         temp++;
}

暫無
暫無

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

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