Сообщение от фонарик
|
А не подскажете, почему если добавить в sort_arr имена которых нет в объекте materials, то команда log после сортировки materials считает что у объекта есть такие свойства со значением undefined?
|
из-за вот этой строки.
result[name]=object[name]
object[name], если его нет в object вычисляется в undefined
чтобы этого не было, можно сделать вот такой фикс
materials = {"Глина" : 10, "Цемент" : 5, "Вода" : 8, "Песок" : 14}
sort_arr = ["Красители", "Песок", "Цемент", "Вода", "Примеси"]
sort = function(object, pattern){
var result={}
pattern.forEach(function(name){
if(name in object) result[name]=object[name]
})
Object.keys(object).forEach(function(name){if(pattern.indexOf(name) === -1) result[name] = object[name]})
return result
}
materials=sort(materials, sort_arr)
alert(JSON.stringify(materials))
for (n in materials){
console.log(n+" "+materials[n])
}