Не совсем понятна логика преобразования числовых массивов. Если со строками понятно, то с числами по условию какой-то чёрный ящик получается.
const source = ['Яблоко', 'Банан', 'Груша', 'Груша', 'Яблоко', 'Яблоко', 'Банан'];
const mix_source = [
['Яблоко', 'Банан', 'Груша', 'Груша', 'Яблоко', 'Яблоко', 'Банан'],
[33, 22, 3331, 234, 3234],
];
// Функция для обработки строковых массивов
const clearStringArray = (arr) => {
const clear_arr = [];
arr.forEach((arr_item) => {
if(clear_arr.indexOf(arr_item) === -1) {
clear_arr.push(arr_item);
}
});
return clear_arr;
}
// Функция для обработки числовых массивов
const clearNumberArray = (arr) => {
// ...
return arr;
}
// Функция для обработки сложного массива
const clearMixArray = (arr) => {
return mix_source.map((mix_item) => {
const is_array = Array.isArray(mix_item);
const array_have_first_element = typeof mix_item[0] !== undefined;
const first_element_type = typeof mix_item[0];
if (is_array && array_have_first_element) {
switch(first_element_type) {
case "string": return clearStringArray(mix_item);
case "number": return clearNumberArray(mix_item);
}
}
});
}
// Пример обработки строкового массива
console.log(clearStringArray(source));
//(3) ["Яблоко", "Банан", "Груша"]
console.log(clearMixArray(mix_source));
/*
0: (3) ["Яблоко", "Банан", "Груша"]
1: (5) [33, 22, 3331, 234, 3234]
length: 2
*/