Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как заполнить объект через цикл с присвоением переменной значению (https://javascript.ru/forum/misc/74435-kak-zapolnit-obekt-cherez-cikl-s-prisvoeniem-peremennojj-znacheniyu.html)

Tungusv 11.07.2018 15:05

как заполнить объект через цикл с присвоением переменной значению
 
Не могу сообразить. Нужно перебором свойств или есть и другие способы?
Подскажите примеры

рони 11.07.2018 15:17

:-? может макет минимальнный?

j0hnik 11.07.2018 15:17

если изменить существующие то так
var obj = { a: 0, b: 0, c: 0 };
for(prop in obj){
	obj[prop] = 1;
}
console.log(obj);


если добавить новые, то простым циклом

Tungusv 12.07.2018 07:11

//

Tungusv 12.07.2018 07:18

Есть структура:
struct:
0:
Id: "1"
Name: "name1"
ShortName: "shortname1"
ParentID: "11"
Login: "login1"
1:
Id: "2"
Name: "name2"
ShortName: "shortname2"
ParentID: "22"
Login: "login2"

Циклом нужно всем значениям присвоить переменные.

Tungusv 12.07.2018 08:42

Вот что получилось. Верно так?
for (let i = 0; i < list.length; i++) {

item[i] = {
id: item[i]['Id'],
name : item[i]['Name'],
shortName : item[i]['ShortName'],
parentId : item[i]['ID'],
login : item[i]['login']
}


kusts.push(item);
}

Tungusv 12.07.2018 11:17

Все свойства из list перенести в kusts и чтоб этим свойствам переменные назначить.

рони 12.07.2018 11:39

:-?
for (let i = 0; i < list.length; i++) kusts[i] = {...list[i]}

SuperZen 12.07.2018 13:07

Цитата:

Сообщение от Rise
Даже проще так наверно)
for (let i = 0; i < list.length; i++) {
    kusts[i] = list[i];
}

так будет скопирована ссылка и если кустс править, то лист тоже поменяется, и наоборот...

<script>
  var list = [
    { 
      Id: 1,
      Name: "name1",
      ShortName: "shortname1",
      ParentID: 11,
      Login: "login1"
    },
    {
      Id: 2,
      Name: "name2",
      ShortName: "shortname2",
      ParentID: 22,
      Login: "login2"
    }
  ]
  var kusts = []
  for (let i = 0; i < list.length; i++) {
    kusts[i] = list[i];
  }
  console.log(kusts);
  kusts[0].Id = 3
  console.log(list)
</script>


Копия:

<script>
  var newO = JSON.parse(JSON.stringify(list))
  for (i in newO) {
    newO[i].Name = 'some new name'
    //n.ShortName = 'some new shortname'
  }
  console.log(newO)
</script>

SuperZen 13.07.2018 15:17

Rise, чтобы в древнем браузере работало (я про spread operator, и не только =>...) надо через browserify пропустить :)


Часовой пояс GMT +3, время: 16:20.