2014-11-13 2 views
0

Я изучаю функциональный javascript. еще новичок. У меня есть проблема: Как изменить этот объектПоследовательный объект с функциональным Javascript

var object = { 
    "person1": { 
     "name": "Bob", 
     "last": "Smith" 
    }, 
    "person2": { 
     "name": "John", 
     "last": "Smith" 
    }, 
    "person3": { 
     "name": "Jane", 
     "last": "Smith" 
    } 
} 

в этом. (Желательно с некоторым функциональным стилем)

var object = { 
    "person1": { 
     "no": 1, 
     "name": "Bob", 
     "last": "Smith" 
    }, 
    "person2": { 
     "no": 2, 
     "name": "John", 
     "last": "Smith" 
    }, 
    "person3": { 
     "no": 3, 
     "name": "Jane", 
     "last": "Smith" 
    } 
} 

Моя первая мысль использовать размер объекта и сделать массив с его длиной

makeArray = function(obj){ 
      for (key in obj) { 
       var number = []; 
       if (obj.hasOwnProperty(key)) size++; 
       number.push(size); 
      }; 
      return number; 
      }; 

так myArray = makeArray(object); myArray = [1,2,3]; //1,2,3 instead 0,1,2 так что я получаю номер 1,2,3 не 0,1,2. но как я столкнуть ее в отдельных person.properties

спасибо,

+1

Как то, что мы имеем здесь не синтаксически правильно это трудно понять, чего вы хотите. Какова цель? –

+1

номер вар; не является массивом. Вам нужно инициализировать массив, должен быть var number = []; –

+0

@dystroy извиниться, если это неверно; то, что я хочу, - это изменить первый объект var на второй объект var с дополнительным свойством «нет». – vdj4y

ответ

0

Чтобы сделать makeArray работу функции следует:

  • Инициализировать массив вне цикла
  • объявить счетчик в функцию и инициализировать ее вне петли
  • Нажмите прилавок, только если вы нашли недвижимость

Код:

function makeArray(obj){ 
    var number = [], size = 0; 
    for (key in obj) { 
    if (obj.hasOwnProperty(key)) { 
     size++; 
     number.push(size); 
    } 
    } 
    return number; 
} 

Если вы хотите установить no свойство объектов:

function setNo(obj){ 
    var size = 0; 
    for (key in obj) { 
    if (obj.hasOwnProperty(key)) { 
     size++; 
     obj[key].no = size; 
    } 
    } 
} 
+0

WOW !!! спасибо, он работает – vdj4y

+0

@ vdj4y: Что такое object1 и object2? Объект или массив? Можете ли вы отредактировать вопрос, используя правильный синтаксис? – Aravind

+0

@aravind извините, и дайте мне время. Случай и объект являются само-воображаемыми. Я даже не тестировал его, прежде чем вводить его здесь. но решение по guffa правильное. позвольте мне попытаться исправить вопрос за несколько минут – vdj4y

0

var obj = { 
 
    "person1": { 
 
    "name": "Bob", 
 
    "last": "Smith" 
 
    }, 
 
    "person2": { 
 
    "name": "John", 
 
    "last": "Smith" 
 
    }, 
 
    "person3": { 
 
    "name": "Jane", 
 
    "last": "Smith" 
 
    } 
 
} 
 

 
Object.keys(obj).forEach(function(v, k) { 
 
    obj[v].no = k; 
 
}); 
 

 
console.log(obj);

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