рони,
вы настоящий профессор :D Поклон вам до земли. Как же все-таки всё сложно :-? |
var materials = {"Глина" : 10, "Цемент" : 5, "Вода" : 8, "Песок" : 14};
var sort_arr = ["Красители", "Песок", "Цемент", "Вода", "Примеси"];
function objSort (obj , arr) {
var result = {};
arr.forEach(function(name) { if(name in obj) result[name] = obj[name];});
for(var i in obj) result[i] = obj[i];
return result;
}
var materials = objSort(materials, sort_arr)
alert(JSON.stringify(materials))
|
caetus,
:write:
arr.forEach(function(name) {name in obj && (result[name] = obj[name])});
|
теперь можно и удалять свойство с obj и красиво смотреться :dance:
name in obj && (result[name] = obj[name]) && delete obj[name]; |
Цитата:
|
да тут понятно что без delete функция может сортировать объект и создавать новый отсортированный !
с delete функция делает меньше работы и тут стает вопрос когда эта производительность может пригодится ! отдаю предпочтения функции без delete |
Цитата:
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])
}
|
Цитата:
|
|
Цитата:
|
| Часовой пояс GMT +3, время: 04:21. |