я потом создаю новый массив координат по условию, как я могу высчитать координату x, если мне надо знать как бы длину arr2, чтобы условно поделить индекс элемента на индекс последнего элемента, удовлетворившего условию?
const arr1 = [{count:1, isVal:true,digital:2},{count:2, isVal:false,digital:2}]
const arr2= arr1.reduce(function(acc, el,index){
if (el.isVal) {
acc.push({
x: index/(arr2.length-1),
y: el.digital
});
}
return acc;
}, []);
В два прохода попробуй.
А такое вообще возможно сделать?
дружище ты можешь не использовать редус там где он не нужен? там кровь из глаз
const arr2 = [] arr1.forEach((el, index) => { if(el.isVal) { arr2.push({x:index/arr2.length-1, y:el.digital}) } })
ты вроде координаты записывал раньше, а теперь у тебя задача поменялась? сохрани длину массива2 в переменную
Это и есть координаты x y
Так мне внутри надо получается индекс последнего элемента прошедшего условие получичить чтоб на него поделить и получить x
придумай счетчик какойнибудь
Так я просто не понимаю, как я в этом же скоупе могу получить итоговую длину получившегося массива чтоб узнать последний индекс
у тебя первый элемент всегда 0 индекс правильно?
Если элементов будет больше в исходном массиве, то там по этому условию могут пройти элементы с разными же индексами
https://jsbin.com/vaximipabo/1/edit?js,console не знаю что ты делаешь, честно посмотри добавил еще элементов подправил расчет
С редьюс если, надо делать на acc.lenght-1?
Хм, ща подумаю еще,спасибо
Я придумал, а я могу же в редьюс в конце не acc возвращать, а создать новый массив из acc, где координату каждого элемента поделю на длину acc?
Обсуждают сегодня