09.12.2013, 17:50
|
Кандидат Javascript-наук
|
|
Регистрация: 08.12.2013
Сообщений: 142
|
|
сделайте кто нибудь чтобы оно порядок учитывало а то я мозг сломал)
cyber, чувак, выручай) ты придумал эту кашу, придумай как сделать чтобы она учитывала порядок и
12345 корректно превращалось в 54321, пожааалуйста ну пожаалуйста)!
|
|
09.12.2013, 17:50
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
Сообщение от cyber
|
Если элемента нет во втором массиве, но есть в первом то его нужно удалить.
|
можно написать цикл пока есть в oldArray элемент с индексом newArray.length его удалить - но можно проще просто изменить длину массива
|
|
09.12.2013, 17:52
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
Сообщение от Maxmaxmaximus4
|
порядок учитывало
|
или мой вариант это делает или обьясни про порядок
|
|
09.12.2013, 17:53
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Maxmaxmaximus4, ок, как только закончу с курсовой , посмотрю что можно придумать)
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
09.12.2013, 18:06
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
var changes = {
insert : [[0, 5], [1, 4], [2, 3], [3, 2]],
length : 5,
relocation : []
}
function conversion(b, c) {
for (var a = 0; a < c.relocation.length; a++) {
var d = c.relocation[a];
b = b.splice(d[0], d[1]).concat(b)
}
for (a = 0; a < c.insert.length; a++) d = c.insert[a], b.splice(d[0], 0, d[1]);
b.length = c.length;
return b
};
alert( conversion([1, 2, 3, 4, 5],changes));
alert( conversion([1, 2, 3, 4, 5, 6, 7, 8, 20, 30],changes))
|
|
09.12.2013, 18:10
|
Профессор
|
|
Регистрация: 04.02.2011
Сообщений: 1,815
|
|
Рони
Я подставил значения
var oldArray = [3,3,5,6,7,8,9,0,2,9,0,6,0];
var newArray = [3,3,9,0,3,8,9,0,5,6,7,2,8,9,0,6,0];
У тебя 12 операций уходит, хотя достаточно девяти.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
|
|
09.12.2013, 18:17
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
DjDiablo,
да скрипт не ставит найденные одинаковые цепочки сразу на свои места -- цепочки "доползают" до своего места по мере вставки недостающих элементов.
|
|
09.12.2013, 18:36
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от рони
|
можно написать цикл пока есть в oldArray элемент с индексом newArray.length его удалить - но можно проще просто изменить длину массива
|
я конечно нечего не хочу сказать, но моя функция немного меньше операций предлагает, и из за твоей у меня пк подвисает на core i7))
http://learn.javascript.ru/play/feUHP
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
Последний раз редактировалось cyber, 09.12.2013 в 18:42.
|
|
09.12.2013, 18:46
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
DjDiablo,
3,3,5,6,7,8,9,0,2,9,0,6,0<br>
6,0,3,3,5,6,7,8,9,0,2,9,0<br>
8,9,0,6,0,3,3,5,6,7,2,9,0<br>
5,6,7,8,9,0,6,0,3,3,2,9,0<br>
8,9,0,5,6,7,6,0,3,3,2,9,0<br>
9,0,8,9,0,5,6,7,6,0,3,3,2<br>
3,3,9,0,8,9,0,5,6,7,6,0,2<br>
3,3,9,0,3,8,9,0,5,6,7,6,0,2<br>
3,3,9,0,3,8,9,0,5,6,7,2,6,0,2<br>
3,3,9,0,3,8,9,0,5,6,7,2,8,6,0,2<br>
3,3,9,0,3,8,9,0,5,6,7,2,8,9,6,0,2<br>
3,3,9,0,3,8,9,0,5,6,7,2,8,9,0,6,0,2<br>
|
|
09.12.2013, 18:51
|
Кандидат Javascript-наук
|
|
Регистрация: 08.12.2013
Сообщений: 142
|
|
ш...што вы делаете наркоманы О_О
я уже кстати почти допилил рабочую функцию =) при условии что реплейс приоритетнее, удаления и вставки.
то есть 10 реплейсов, приоритетнее 10 удалений и вставок. а это как раз то что нужно для ui, потому что перерисовать то что есть в уже готовом элементе мне не составит труда
$scope[itemName] = arr[index];
$scope.$digest(); // зарендерить элемент
а вот удалить и создать новый это то же самое что и тут тока новый парсинг дом этого элемента)
Последний раз редактировалось Maxmaxmaximus4, 09.12.2013 в 18:53.
|
|
|
|