особо не тестил, но вроде так
const res = arr2.map(v => this.i = arr1.indexOf(v, ++this.i % arr1.length), {i: 0}) |
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]; |
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)); |
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 |
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 |
Цитата:
последний пример #15 снова не рабочий |
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 } } }, {}) |
Цитата:
|
Vlasenko Fedor,
ок! ))) |
рони,
за тобой не поспеешеь :). не могу + :-/ |
Часовой пояс GMT +3, время: 09:14. |