Size: a a a

JavaScript Noobs — сообщество новичков

2020 December 27

C

Chris in JavaScript Noobs — сообщество новичков
@Dragos .
Привет. Что то не пойму. Есть this.good =[{label: Молоко, price: 15, count: 2}, {label: печенье, price: 20, count: 5}]
Нужно пробежать по массиву найти дублирование label и сделать общий count по label. Не пойму как сделать...((
const result = [];
for (const good of this.goods) {
 const ex = result.find(item => item.label = good.label;
 if (ex) {
   ex.count += good.count;
 } else {
   result.push(good);
 }
}
this.goods = result;
источник

C

Chris in JavaScript Noobs — сообщество новичков
или так
this.goods = this.goods.reduce((result, good) => {
 // ровно такой же код, как в теле цикла
 return result
}, [])
источник

i

iwahid in JavaScript Noobs — сообщество новичков
yung musk
у тебя после удаления индексы сдвигаются т.к меняется длина массива
Ага, и это проблема. Что можно сделать (какое решение?), что бы выполнить эту задачу?

Или как иначе можно решить  эту задачу?
Полное условие задачи: Remove undefined and empty elements in Array using arrow functions and built-in array method

Новый массив вернуть нельзя, нужно изменять текущий
источник

ym

yung musk in JavaScript Noobs — сообщество новичков
iwahid
Ага, и это проблема. Что можно сделать (какое решение?), что бы выполнить эту задачу?

Или как иначе можно решить  эту задачу?
Полное условие задачи: Remove undefined and empty elements in Array using arrow functions and built-in array method

Новый массив вернуть нельзя, нужно изменять текущий
в полном условии же нет такого что нельзя новый массив вернуть
источник

i

iwahid in JavaScript Noobs — сообщество новичков
yung musk
в полном условии же нет такого что нельзя новый массив вернуть
Я решил задачу с использованием filter, и она работает
let result = ['test', , 'word', '', 'value'].filter(item => {
 if (item !== undefined && item != '')
   return true
 return false
})
но задача была отклонена. Единственная причина, на мой взгляд, это то, что требуется изменять текущий массив. Иначе (если бы допускалось вернуть новый) в условии  бы указали что вернуть новый
источник

ym

yung musk in JavaScript Noobs — сообщество новичков
iwahid
Я решил задачу с использованием filter, и она работает
let result = ['test', , 'word', '', 'value'].filter(item => {
 if (item !== undefined && item != '')
   return true
 return false
})
но задача была отклонена. Единственная причина, на мой взгляд, это то, что требуется изменять текущий массив. Иначе (если бы допускалось вернуть новый) в условии  бы указали что вернуть новый
let arr = ['test', 'word', '', 'element', 'kek', undefined, 'lol', ''];

arr.forEach((item, index, object) => {
 if (item == undefined || item == '') {
   object.splice(index, 1);
   index = index - 1
 }
});
источник

ym

yung musk in JavaScript Noobs — сообщество новичков
держи
источник

ym

yung musk in JavaScript Noobs — сообщество новичков
источник

i

iwahid in JavaScript Noobs — сообщество новичков
yung musk
let arr = ['test', 'word', '', 'element', 'kek', undefined, 'lol', ''];

arr.forEach((item, index, object) => {
 if (item == undefined || item == '') {
   object.splice(index, 1);
   index = index - 1
 }
});
лоол, как же просто. Не додумался сам о том, что индекс можно починить
источник

i

iwahid in JavaScript Noobs — сообщество новичков
Спасибо большое )
источник

C

Chris in JavaScript Noobs — сообщество новичков
🤔 а с чего это должно влиять, когда index - локальная переменная? или у неё хитрый сеттер?
источник

j

jk in JavaScript Noobs — сообщество новичков
Это не должно работать.
источник

ym

yung musk in JavaScript Noobs — сообщество новичков
jk
Это не должно работать.
работает все
источник

j

jk in JavaScript Noobs — сообщество новичков
yung musk
работает все
[1, 1, 1].forEach((item, index) => {
 console.log(index)
 index = 0
})
источник

C

Chris in JavaScript Noobs — сообщество новичков
источник

C

Chris in JavaScript Noobs — сообщество новичков
Не нужно там индекс менять, и бессмысленно
источник

ym

yung musk in JavaScript Noobs — сообщество новичков
интересна, а почему у него не работало
источник

ym

yung musk in JavaScript Noobs — сообщество новичков
собсна пофиг, итоговое решение такое

const arr = ['test', 'word', '', 'element', 'kek', undefined, 'lol', ''];

arr.forEach((el, i, array) => {
   if (el === undefined || el.length < 1) {
       array.splice(i, 1);
   }
});
источник

C

Chris in JavaScript Noobs — сообщество новичков
источник

j

jk in JavaScript Noobs — сообщество новичков
yung musk
собсна пофиг, итоговое решение такое

const arr = ['test', 'word', '', 'element', 'kek', undefined, 'lol', ''];

arr.forEach((el, i, array) => {
   if (el === undefined || el.length < 1) {
       array.splice(i, 1);
   }
});
const arr = ['test', '', '', '', '', 'element']
источник