У меня этот код:Невозможно установить свойство '01' неопределенной
var _ = require('underscore');
var myObj = [
{'name': 'Mike', 'number' : 'b1' , 'level' : 0 },
{'name': 'Tom', 'number' : 'b2' , 'level' : 0 }
];
var result = _.map(myObj, _.invert);
Теперь, результат:
[ { '0': 'level', Mike: 'name', b1: 'number' },
{ '0': 'level', Tom: 'name', b2: 'number' } ]
Ok, пока здесь.
Затем я добавляю в результате некоторые части и пытаются заполнить их:
result = result,
parts = {'levels': {}, 'names': {}, 'numbers': {}};
result.forEach(function(obj,i){
Object.keys(obj).forEach(function(k) {
parts[k +"s"][k +(i+1)] = obj[k];
});
});
, но я получаю:
TypeError: Cannot set property '01' of undefined
на parts[k +"s"][k +(i+1)] = obj[k];
Сразу отметим, что если я не использую invert
, код запускается без проблем.
Очевидно 'частей [K + "S"]' не определено. Не знаете, почему вы думали иначе, а не то, что вы пытаетесь сделать. – Oriol
'parts [k +" s "] [k + (i + 1)] = obj [k];' => 'parts [k +" s "] = parts [k +" s "] || {} [k + "s"] [k + (i + 1)] = obj [k]; ' –
Почему вы вообще используете' _.inverse'? Если вы инвертируете ключ и значения, то вам обязательно нужно _inverse_ 'k' и' obj [k] 'также:' parts [obj [k] + "s"] [obj [k] + (i + 1) ] = k; ' –