2016-12-16 1 views
1

У меня есть объект, как это:Продолжайте добавлять элементы из массива до конца цикла

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

Является ли их какой-либо способ получить повторить номер вместо того, чтобы «не определено»

Пожалуйста, помогите мне для этого

+0

Привет, Vinu, я предлагаю вам отредактировать вопрос с действительными массивами (они отсутствуют '[' и ']'), и вы не можете использовать 'Object', поскольку это зарезервированное ключевое слово (используйте' object' с небольшим ' o') ... – kukkuz

ответ

1

Размер 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;}

+0

@VinuViswambharan не могли бы вы ответить на ответы? :) – kukkuz

+0

Привет, Это работает для меня .. Большое спасибо! –

+0

Как это сделать .. Я попытался ... –

2

вы могли бы использовать дополнительный вар.

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

Спасибо всем за поддержку .. Его работа .. Спасибо еще раз! –

0

Вы можете использовать временное значение, чтобы указать на массив чисел, как это:

var temp = 0; 
for (var i = 0; i < object.length; i++) { 
    object[i].number = array[temp]; 
    if(temp == array.length) 
     temp = 0; 
    else 
     temp++; 
} 
0
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]; 
} 
+0

Лучше [добавить больше контекста/объяснения] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) вокруг кода (в отличие от простого ответа только на код) поскольку это делает ответ более полезным. – EJoshuaS

2

Вы можете карту своих входные объектов, добавив нужное значение из массива, благодаря модулю исчислению

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

Смежные вопросы