как заполнить объект через цикл с присвоением переменной значению
Не могу сообразить. Нужно перебором свойств или есть и другие способы?
Подскажите примеры |
:-? может макет минимальнный?
|
если изменить существующие то так
var obj = { a: 0, b: 0, c: 0 }; for(prop in obj){ obj[prop] = 1; } console.log(obj); если добавить новые, то простым циклом |
//
|
Есть структура:
struct: 0: Id: "1" Name: "name1" ShortName: "shortname1" ParentID: "11" Login: "login1" 1: Id: "2" Name: "name2" ShortName: "shortname2" ParentID: "22" Login: "login2" Циклом нужно всем значениям присвоить переменные. |
Tungusv,
Что за язык, откуда структура в js? Перевернули всё с ног на голову, переменным присваиваются значения. |
В общем это похоже на массив объектов
function Person(Id, Name, ShortName, ParentID, Login) { this.Id = Id; this.Name = Name; this.ShortName = ShortName; this.ParentID = ParentID; this.Login = Login; } var struct = []; struct.push(new Person("1", "name1", "shortname1", "11", "login1")); struct.push(new Person("2", "name2", "shortname2", "22", "login2")); console.log(struct); |
Вот что получилось. Верно так?
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); } |
Вам надо list в kusts скопировать? Определенные свойства или все? Определенные:
for (let i = 0; i < list.length; i++) { kusts[i] = { Id: list[i]['Id'], Name: list[i]['Name'], ShortName: list[i]['ShortName'], ParentID: list[i]['ParentID'], Login: list[i]['Login'] }; } Все: for (let i = 0; i < list.length; i++) { for (let k in list[i]) { kusts[i][k] = list[i][k]; } } Даже проще так наверно) for (let i = 0; i < list.length; i++) { kusts[i] = list[i]; } |
Хм... время на сервере форума отстает на минут 7...
|
Все свойства из list перенести в kusts и чтоб этим свойствам переменные назначить.
|
:-?
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> |
Tungusv,
сами свойства это переменные и есть, зачем еще переменные переменных? рони, совсем новое :) а я понять не мог как так что это... Что то не понял как так, в прошлом месяце приняли, а в браузере уже работает? О как прогресс чего достиг, молодцы работают на опережение :D Так! В Firefox не пашет, надо обновиться... SuperZen, JSON.parse(JSON.stringify(list)) это что за фокус? Ааа, типа копия, понял :) |
Rise, чтобы в древнем браузере работало (я про spread operator, и не только =>...) надо через browserify пропустить :)
|
Ещё как вариант
<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] = Object.assign({}, list[i]); } kusts[0].Id = 3; alert(`${kusts[0].Id}, ${list[0].Id}`); </script> |
Часовой пояс GMT +3, время: 08:19. |