Здравствуйте,
Имеется двухмерный массив:
var arr = [
[5, 1, 0],
[1, 1, 0],
[5, 1, 0],
[4, 1, 0],
[3, 0, 0],
[1, 0, 0],
];
и пустой массив:
var result = [];
Задача состоит в следующем:
если первые индексы массива одинаковые, например 5
то удалить дубли и сложить вторые индексы, получить [5, 2, 0],
т. е из [5, 1, 0] и [5, 1, 0] получить [5, 2, 0]
и еще, если второй индекс равен нулю - то удалить, например [3, 0, 0] или [1, 0, 0],
в итоге нужно получить в result:
result = [
[5, 2, 0],
[1, 1, 0],
[4, 1, 0],
];
JavaScript
Сравнение двухмерного массива
var arr = [
[5, 1, 0],
[1, 1, 0],
[5, 1, 0],
[4, 1, 0],
[3, 0, 0],
[1, 0, 0],
]
arr.sort()
for (var i = 0; i < arr.length; i++){
if (arr[i][1] == 0) {
arr.splice(i, 1)
}
}
for (var i = 1; i < arr.length; i++) {
if (arr[i][0] == arr[i - 1][0]){
arr[i - 1][1] += arr[i][1]
arr.splice(i, 1)
i--
}
}
console.log(arr)
[5, 1, 0],
[1, 1, 0],
[5, 1, 0],
[4, 1, 0],
[3, 0, 0],
[1, 0, 0],
]
arr.sort()
for (var i = 0; i < arr.length; i++){
if (arr[i][1] == 0) {
arr.splice(i, 1)
}
}
for (var i = 1; i < arr.length; i++) {
if (arr[i][0] == arr[i - 1][0]){
arr[i - 1][1] += arr[i][1]
arr.splice(i, 1)
i--
}
}
console.log(arr)
Сергей Волковский
sort по умолчанию сортирует их как строки. Это сработало только потому что там числа меньше 10 ) А скажем, console.log( "9" < "11" ); // выводит true. Для реальной сортировки нужно прописать более сложную функцию
На условии "если второй индекс равен нулю - то удалить" надоело делать, и так длинно получилось
>>>
first = [];
var arr = [
[5, 1, 0],
[1, 1, 0],
[5, 1, 0],
[4, 1, 0],
[3, 0, 0],
[1, 0, 0],
];
for (var i = 0; i < arr.length; i++) {
first.push(arr[i][0])
};
var b = [];
for (var i = 0; i < first.length; i++) {
for (var j = 0; j < first.length; j++) {
if (i == j) {
continue;
}
if (first[i]==first[j]) {
b.push(first[i]);
var n = first[i];
}
for (var k = 0; k < first.length; k++) {
if (first[k] == n) {
first.splice(k, 1);
}
};
};
};
for (var i = 0; i < arr.length; i++) {
for (var n = 0; n < b.length; n++) {
if (b[n] == arr[i][0]) {
console.log(b[n]);
arr[i][1] += arr[i][1];
break
}
}
};
console.log(arr)
>>>
first = [];
var arr = [
[5, 1, 0],
[1, 1, 0],
[5, 1, 0],
[4, 1, 0],
[3, 0, 0],
[1, 0, 0],
];
for (var i = 0; i < arr.length; i++) {
first.push(arr[i][0])
};
var b = [];
for (var i = 0; i < first.length; i++) {
for (var j = 0; j < first.length; j++) {
if (i == j) {
continue;
}
if (first[i]==first[j]) {
b.push(first[i]);
var n = first[i];
}
for (var k = 0; k < first.length; k++) {
if (first[k] == n) {
first.splice(k, 1);
}
};
};
};
for (var i = 0; i < arr.length; i++) {
for (var n = 0; n < b.length; n++) {
if (b[n] == arr[i][0]) {
console.log(b[n]);
arr[i][1] += arr[i][1];
break
}
}
};
console.log(arr)
Очередной дебилоид который вместо вопроса решил поделиться тем что ему "нужно"... раз нужно - делай, а не личико отращивай.
Массивы сравниваются перебором их элементов. Хоть двумерные, хоть двадцатимерные: несколько ссылочных переменных, два цикла, и детская логика условий (либо, рекурсией... она проще, и допустима при одном уровне вложенности. Но цикл естессно предпочтительнее, чтобы впоследствии не переписывать при росте вложенности).
Массивы сравниваются перебором их элементов. Хоть двумерные, хоть двадцатимерные: несколько ссылочных переменных, два цикла, и детская логика условий (либо, рекурсией... она проще, и допустима при одном уровне вложенности. Но цикл естессно предпочтительнее, чтобы впоследствии не переписывать при росте вложенности).
Ялчин Калаев
Сам бля мудаеб... Я вопрос задал
Ялчин Калаев
Люди ответили уже, меня устраивает
console.log( result );
Похожие вопросы
- Помогите избавиться от пустых значений в массиве.
- Как найти максимальное значение в массиве массивов?
- Программирование Джава. Написать код на упорядочивание массивов.
- вопрос про массивы
- Нужна помощь в массиве JavaScript
- Массивы с длиной-что это
- напишите программу которая проверяет элементы массива на схожесть
- Заполнение массива случайными простыми числами в диапазоне от 2 до n
- Как правильно найти наибольший и наименьший значения массива?
- Получение массива из объектов, которые содержат имя cookie и ее значение