|
|
|||||
Регистрация: Oct 2010
Адрес: Новосиб
Сообщений: 122
|
оно?
var arr:Array = new Array(); arr.push({name:"one", manager:true}); arr.push({name:"tru", manager:true}); arr.push({name:"fri", manager:false}); arr.push({name:"one", manager:true}); arr.push({name:"tru", manager:true}); arr.push({name:"fri", manager:true}); trace("Employees:"); arr.sortOn(["name", "manager"], [Array.CASEINSENSITIVE, Array.CASEINSENSITIVE]); arr.forEach(traceEmployee); for(var i:uint = 0; i<arr.length; i++){ if(arr[i]["name"] == arr[i+1]["name"] && arr[i]["manager"] == arr[i+1]["manager"]){ arr.splice( i, 1 ); } } trace("Managers:"); arr.forEach(traceEmployee); function traceEmployee(element:*, index:int, arr:Array):void { trace("\t" + element.name + ((element.manager) ? " (manager)" : "")); } |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
kseniya, сортировка тоже цикл.
|
|
|||||
Регистрация: Mar 2007
Сообщений: 207
|
Могу ошибаться, тк все что знаю об AS3-это первые пять глав мука, но вроде можно использовать Array.indexOf() , по идее как раз 1 цикл.
|
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Именинничек, давай, не томи уже ))
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
Modus ponens
|
Если уж использовали forEach() / sortOn(), так уж точно было бы лучше использовать filter() всяко быстрее было бы.
Только, мне кажется, что лучше построить добавление и удаление так, чтобы дубликаты не добавлялись - это будет гораздо менее затратно, да и по логике более очевидно. EDIT: indexOf - такой же цикл. Кроме того, он сравнивает ссылки на объекты а не значения их свойств. Т.е. из того, как я понял задание, new Point(100, 500) и { x : 100, y : 500 } в данном контексте считаются одинаковыми.
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 05.04.2011 в 17:55. |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
forEach() / filter() - всяко медленнее обычных циклов. Там каждый раз вызов сторонней функции происходит, что далеко не быстро..
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
an_games, indexOf вполне себе цикл и тоже не подойдёт.
В один цикл (трейсы не считаются): var arr:Array = new Array(); arr.push({name:"one", manager:true}); arr.push({name:"tru", manager:true}); arr.push({name:"fri", manager:false}); arr.push({name:"one", manager:true}); arr.push({name:"tru", manager:true}); arr.push({name:"fri", manager:true}); trace("Employees:"); arr.forEach(traceEmployee); function getHash(obj:Object):String { return obj.name + (obj.manager ? '1' : '0'); } var dict:Object = new Object(); for(var i:uint = 0; i<arr.length; i++) { var hash:String = getHash(arr[i]); if (hash in dict) arr.splice(i--, 1); dict[hash] = true; } dict = null; trace("Managers:"); arr.forEach(traceEmployee); function traceEmployee(element:*, index:int, arr:Array):void { trace("\t" + element.name + ((element.manager) ? " (manager)" : "")); } |
|
|||||
Регистрация: Oct 2010
Адрес: Новосиб
Сообщений: 122
|
блиин точно можно же хранить ещё и смотреть есть ли там что-то..
а можно ещё рекурсией) var arr:Array = new Array(); arr.push({name:"one", manager:true}); arr.push({name:"tru", manager:true}); arr.push({name:"fri", manager:false}); arr.push({name:"one", manager:true}); arr.push({name:"tru", manager:true}); arr.push({name:"fri", manager:true}); trace("Employees:"); arr.forEach(traceEmployee); arr = sortO(arr,0,0,arr.length); trace("Managers:"); arr.forEach(traceEmployee); function traceEmployee(element:*, index:int, arr:Array):void { trace("\t" + element.name + ((element.manager) ? " (manager)" : "")); } function sortO(arrr:Array, i1:uint, i2:uint, len:uint):Array { if (i1 < len) { if (i2 < len) { var len2:uint = len; if(i1 != i2 && arrr[i1]["name"] == arrr[i2]["name"] && arrr[i1]["manager"] == arrr[i2]["manager"]){ len2--; arrr.splice(i2, 1); } sortO(arrr, i1, i2+1, len2); } else { sortO(arrr, i1+1, 0, len); } } return arrr; } Последний раз редактировалось kseniya; 05.04.2011 в 18:20. |
|
|||||
Регистрация: Mar 2007
Сообщений: 207
|
Доу, прямо-таки новые горизонты окрылись.
|
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
kseniya, жесть
__________________
Загружаем картинки, минуя ошибки безопасности |
Часовой пояс GMT +4, время: 15:25. |
|
« Предыдущая тема | Следующая тема » |
Теги |
array , массив , удаление переменной |
|
|