09.12.2013, 00:02
|
Кандидат Javascript-наук
|
|
Регистрация: 08.12.2013
Сообщений: 142
|
|
Знаешь как надо потестить? Используя эти преобразования из старого массива получить новый, у меня что-то не получается.
|
|
09.12.2013, 00:04
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от Maxmaxmaximus4
|
я обьясню почему, просто это тут у нас ладно li, а вдруг у нас там в этом li целые контроллеры и куча детей это допустим сообщения в чате и они сложные там стока разметки в каждом и.т.п. не хотелось бы ПРОСТО ТАК удалять одно и заменять другим, дело в том что ui изменения то автоматически перерисовывает. ладно я думаю это мелочи, вообще ты гений блин) это то что нужно! СПАСИБО! Я даже показывать не буду какого монстра Я напилил)
|
Хз, я сонный немного, голова уже не варит.
Кстати тест, реально еврейский у меня он 3 раза показал 3к
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
09.12.2013, 00:11
|
Кандидат Javascript-наук
|
|
Регистрация: 08.12.2013
Сообщений: 142
|
|
Твоя функция не справилась с этим
var oldArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var newArray = [1, 2, 3, 5, 34, 32, 4, 45];
var changes = compare(oldArray, newArray);
console.log(changes);
function compare(oArr, arr) {
var search = arr.slice();
var insert = [];
var remove = [];
for (var i = 0, index; i < oArr.length; i++) {
index = search.indexOf(oArr[i]);
if (index < 0) remove.push(i);
else delete search[index];
}
for (var i = 0; i < search.length; i++) {
if (i in search) insert.push(i);
}
return {
remove: remove,
insert: insert
}
}
|
|
09.12.2013, 00:13
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от Maxmaxmaximus4
|
Знаешь как надо потестить? Используя эти преобразования из старого массива получить новый, у меня что-то не получается.
|
выбирать рандомно индексы и менять?
Как то так, писал прям в форме отправки (может не работать)
function genArr(count) {
var arr = [];
for(var i = 0; i < count; i++) {
arr.push(i % 2 ? Math.random(): i);
}
return arr;
}
var arr = genArr(100),
arr2 = arr.slice();
for(var i = 0, index; i < 20; i++) {
index = Math.round(Math.random() * 100);
arr2[index] = i;
}
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
09.12.2013, 00:18
|
Кандидат Javascript-наук
|
|
Регистрация: 08.12.2013
Сообщений: 142
|
|
var oldArray = [1, 2, 3, 4, 5];
var newArray = [1, 2, 3, 5, 4, 45];
вот с этим не справляется пишет что insert:[5] и все
он не видит разницы между 4,5 и 5,4 щам будем фиксить)
|
|
09.12.2013, 00:20
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от Maxmaxmaximus4
|
Твоя функция не справилась с этим
|
я так и не понял где
"remove 5,6,7,8 insert 4,5,7 "
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
09.12.2013, 00:20
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Maxmaxmaximus4, ну вообще то она порядок не учитывает)
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
09.12.2013, 00:36
|
Кандидат Javascript-наук
|
|
Регистрация: 08.12.2013
Сообщений: 142
|
|
cyber, уже учитывает, блять не против изредка помогать в написании великой и ужасной ui? ты гениален!!!! я серьезно!! я блять чо тока не придумал чтобы это сделать, да, мое было бы оптимальнее и "правильнее" но млять, кому оно науй надо если и так РАБОТАКЕТ и так МАЛО КОДУ, при чем не факт что мое было бы быстрее так как там несколько проходов и прочего, моя возвращала дамп который потом надо было бы парсить и делать по нему что-то, а твоя ГЕНИАЛЬНАЯ функция ТУПО ВОЗВРАЩАЕТ ПОРЯДОК ДЕЙСТВИЙ КОТОРЫЕ НАДО СДЕЛАТЬ ЧТОБЫ ПОЛУЧИТЬ ИЗ ОДНОГО МАССИВА ДРУГОЙ)!!!!! ЭТО ТО-ЧТО-НУЖНО!! Ты гениален! Правда!
вот кстати исправленная версия:
function compare(oArr, arr) {
var search = arr.slice();
var insert = [];
var remove = [];
for (var i = 0, index; i < oArr.length; i++) {
index = search.indexOf(oArr[i], i);
if (index < 0) remove.push(i);
else delete search[index];
}
for (var i = 0; i < search.length; i++) {
if (i in search) insert.push(i);
}
return {
remove: remove,
insert: insert
}
}
|
|
09.12.2013, 00:42
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Maxmaxmaximus4,
лови, теперь с блэкджеком и replace
Array.prototype.compare = function(arr) {
var search = arr.slice(),
insert = [],
remove = [],
replace = [];
for(var i = 0, index; i < this.length; i++) {
index = search.indexOf(this[i]);
if(!~index) {
remove.push(i);
continue;
}
i != index && replace.push({old: i, new: index});
delete search[index];
};
search.forEach(function (elem, i) {
if(elem)
insert.push(i);
});
return {
remove: remove,
insert: insert,
replace: replace
}
}
console.log([1, 2, 3, 4, 5].compare([1, 2, 3, 5, 4, 45]));
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
09.12.2013, 00:56
|
Кандидат Javascript-наук
|
|
Регистрация: 08.12.2013
Сообщений: 142
|
|
Сообщение от cyber
|
лови, теперь с блэкджеком и replace
|
ща потестим)
|
|
|
|