简体   繁体   English

继续从数组添加项目,直到结束循环

[英]Continue add items from array until end loop

I have an object like this: 我有一个这样的对象:

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"
      };

I have another array Like this 我有另一个这样的数组

var array = [1,2,3];

I adding array values to object using this code: 我使用以下代码将数组值添加到对象:

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

I am getting result like this: 我得到这样的结果:

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
          };

I wanted like this : 我想要这样:

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
          };

Is their any way to get repeat the number instead of getting "undefined" 他们有什么办法得到重复的数字,而不是得到“未定义”

Please help me for this 请帮我

You could map your input objects by adding the right value from array thanks to the modulo calculus 借助模运算,您可以通过从数组添加正确的值来映射输入对象

 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); 

The size of array is 3 while that of object is more - a solution would be to use: array的大小是3,而对象的大小更大-一种解决方案是使用:

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

See demo below: 请参见下面的演示:

 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;} 

you could use an additional var. 您可以使用其他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];
}

You could use a temporary value to point to the numbers array like this: 您可以使用一个临时值指向数字数组,如下所示:

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