особо не тестил, но вроде так
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, время: 22:03. |