Paulyyy, так нужно?
<script type="text/javascript">
function Dublicates(A)
{
var N=A.length, B=[], k=0;
for (var i=0; i<N-1; i++)
{ for (var j=i+1; j<N; j++)
{ if (A[i][0] == A[j][0] && A[j] != 'marker')
{ B[B.length] = A[j];
A[j] = 'marker';
}
}
}
for (var i=0; i<N; i++)
{ if (A[i] != 'marker') A[k++] = A[i]; }
A.length = k;
return 'Дубли (по 1-м элементам строк) исходного массива\n'+B.join('\n')
+'\n\nИсходный массив без дублей\n(порядок следование строк сохранён)'
+'\n'+A.join('\n');
}
</script>
<input value="Пример Arr=[[15,2,-5],[1,2,4],[1,0,1],[2,1,5],[15,11,5],[2,2,5]]" type="button"
onclick="alert( Dublicates([[15,2,-5],[1,2,4],[1,0,1],[2,1,5],[15,11,5],[2,2,5]]) )" />
|
Demath
Не могу сказать что сильно помогло, но все равно спасибо!!:) буду разбираться.. Один вопросик, что тут означает marker? |
Aetae,
Помните вы мне помогли с csv файлом..http://javascript.ru/forum/misc/3768...t-kolonku.html , за что спасибо!! я вызываю функцию Dublicates в строке text.value = arrayToCSV(table, Dublicates(table)); для того чтобы в загружаемом файле изначально удалились дубли. Также мне надо вывести текстом удаленные дубли text.value += ....; Соответственно дубли уже не выводятся. Вообще было много вариантов, этот один из них. Может вы поймете как его лучше сделать... |
Цитата:
Цитата:
|
Посмотрите как работает. Туда надо загрузить файл типа csv чтобы посмотреть что возвращает функция. Конечно же чтобы были дубли по 1 колонке в файле
<!DOCTYPE HTML>
<html lang="ru-RU">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{margin:0;padding:0}
html, body{
width: 100%;
height: 100%;
}
html, body, textarea, input{
font: 20px serif;
background-color: #220;
color: #ddf;
}
textarea{width: 100%;
height: 90%;
border: none;
}
</style>
<script type="text/javascript">
function read(files) { //read files
var i = files.length,
reader = new FileReader();
reader.onload = function () {
example(reader.result);
};
reader.readAsText(files[--i]);
}
function arrayFromCSV(csv) {
var lines = csv.split(/[\r\n]+/), i = lines.length, //split on strings
array = new Array(); // create an array
lines.forEach(function (el, i, lines) {
if (i > 0) {
array.push(el.split(',')); //split by commas, and fill an array
};
});
return array;
}
function arrayToCSV(array) {
var csv = '';
for (var i = 0, l = array.length; i < l; i++) {
csv += (array[i] && array[i].join(',') || '') + '\r\n';
};
return csv;
}
function id(i) {
return document.getElementById(i);
}
function example(csv) {
var table = arrayFromCSV(csv),
text = id('textarea');
text.value = arrayToCSV(table);
function Dublicates(array) {
var dubl = [];
for (var i = 0, l = array.length - 1; i < l; i++) {
for (var j = i + 1; j < array.length; j++) {
if (array[i][0] == array[j][0] && array[j] != 'marker') { // search for the same account numbers
dubl = array.splice(j, 1);
};
};
};
return dubl;
}
text.value += '===== Noted Dublicates Account Numbers =====\n' + arrayToCSV(Dublicates(table));
|
Все, нашла решение :) . Так что всем спасибо)
|
| Часовой пояс GMT +3, время: 07:06. |