05.05.2022, 23:12
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
особо не тестил, но вроде так
const res = arr2.map(v => this.i = arr1.indexOf(v, ++this.i % arr1.length), {i: 0})
|
|
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];
|
|
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));
|
|
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.
|
|
05.05.2022, 23:35
|
|
Профессор
|
|
Регистрация: 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.
|
|
05.05.2022, 23:42
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Сообщение от Vlasenko Fedor
|
this здесь не global,
|
для стрелочных функций this, то где они созданы. примеры выше глобал.
последний пример #15 снова не рабочий
|
|
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
}
}
}, {})
|
|
05.05.2022, 23:51
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
Сообщение от рони
|
снова не рабочий
|
поправил this в 15, а результат вроде правильный
|
|
05.05.2022, 23:53
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Vlasenko Fedor,
ок! )))
|
|
05.05.2022, 23:54
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
рони,
за тобой не поспеешеь . не могу +
|
|
|
|