Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 05.05.2022, 23:12
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

особо не тестил, но вроде так
const res = arr2.map(v => this.i = arr1.indexOf(v, ++this.i % arr1.length), {i: 0})
Ответить с цитированием
  #12 (permalink)  
Старый 05.05.2022, 23:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Vlasenko Fedor,
тоже самое ...
для теста
let arr1 = [1.58, 0.12, 0.1, 0.06, 0.06, 0.06, 0.05, 0.05, 0.05, 0.05, 0.05, 0.01];
let arr2 = [0.05, 0.1, 0.06, 0.06, 0.05, 0.05, 0.05, 0.01, 1.58];
Ответить с цитированием
  #13 (permalink)  
Старый 05.05.2022, 23:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Vlasenko Fedor,
let arr1 = [1.58, 0.12, 0.1, 0.06, 0.06, 0.06, 0.05, 0.05, 0.05, 0.05, 0.05, 0.01];
        let arr2 = [0.05,  0.1,  0.06, 0.06, 0.05, 0.05, 0.05,  0.01, 1.58];
        function arrIndex(a, b) {
            let ob = {};
            return b.reduce((ar, el) => {
                let k = ob[el] ??= 0;
                k = a.indexOf(el, k);
                ar.push(k);
                ob[el] = ++k;
                return ar;
            }, [])
        }
        const res = arr2.map(v => this.i = arr1.indexOf(v, ++this.i % arr1.length), {i: -1})
        console.log(res);
        console.log(arrIndex(arr1, arr2));
Ответить с цитированием
  #14 (permalink)  
Старый 05.05.2022, 23:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Vlasenko Fedor,
как вариант
let arr1 = [1.58, 0.12, 0.1, 0.06, 0.06, 0.06, 0.05, 0.05, 0.05, 0.05, 0.05, 0.01];
        let arr2 = [0.05,  0.1,  0.06, 0.06, 0.05, 0.05, 0.05,  0.01, 1.58];
        function arrIndex(a, b) {
            let ob = {};
            return b.reduce((ar, el) => {
                let k = ob[el] ??= 0;
                k = a.indexOf(el, k);
                ar.push(k);
                ob[el] = ++k;
                return ar;
            }, [])
        }
        const res = arr2.map(v => this[v] = arr1.indexOf(v, (this[v] ?? -1) + 1));
        console.log(res);
        console.log(arrIndex(arr1, arr2));


но использовать this ??? всё валится в window

Последний раз редактировалось рони, 05.05.2022 в 23:32.
Ответить с цитированием
  #15 (permalink)  
Старый 05.05.2022, 23:35
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

const res = arr2.map(function(v){
    for (let i = 0; i < arr1.length; i++) {
        if (v === arr1[i] && !this[i]) {
            this[i] = 1
            return i
        }
    }
}, {})

this здесь не global,
Значение, используемое в качестве this при вызове функции callback

Последний раз редактировалось Vlasenko Fedor, 05.05.2022 в 23:49.
Ответить с цитированием
  #16 (permalink)  
Старый 05.05.2022, 23:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от Vlasenko Fedor
this здесь не global,
для стрелочных функций this, то где они созданы. примеры выше глобал.
последний пример #15 снова не рабочий
Ответить с цитированием
  #17 (permalink)  
Старый 05.05.2022, 23:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Vlasenko Fedor,
рабочий вариант
const res = arr2.map(function(v) {
            for (let i = 0; i < arr1.length; i++) {
                if (v === arr1[i] && !this[i]) {
                    this[i] = 1
                    return i
                }
            }
        }, {})
Ответить с цитированием
  #18 (permalink)  
Старый 05.05.2022, 23:51
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от рони
снова не рабочий
поправил this в 15, а результат вроде правильный
Ответить с цитированием
  #19 (permalink)  
Старый 05.05.2022, 23:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Vlasenko Fedor,
ок! )))
Ответить с цитированием
  #20 (permalink)  
Старый 05.05.2022, 23:54
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

рони,
за тобой не поспеешеь . не могу +
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как реализовать скрытие определённых элементов при клике на один из них tupoimudak2 Элементы интерфейса 10 17.06.2017 11:39