Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Логика в JS, не понимаю (https://javascript.ru/forum/misc/84900-logika-v-js-ne-ponimayu.html)

Белый шум 02.02.2023 10:02

Цитата:

Сообщение от Сергей Ракипов (Сообщение 550366)
рони,
вот это что вы написали (a[0], 0) как я понял а это массив [0] это индекс массив а через запятую 0 это что?

Разве в документации что-то непонятно написано? - https://developer.mozilla.org/ru/doc...ts/Array/every

["a", "b", "c", "d"].every(
 (el, ind, arr) => {
    console.log("el=" + el, "ind=" + ind, "arr=" + arr);
    return true;
 }
);

Сергей Ракипов 02.02.2023 21:21

Цитата:

Сообщение от рони (Сообщение 550373)
и берёте жильца по номеру квартиры

Это я исходя из того что код работает понял что и беру жильца, просто для меня это не логично. Просто придется запомнить что это работает так.

читать тут

про как указать номер массива я знаю

Сергей Ракипов 02.02.2023 21:59

Цитата:

Сообщение от Белый шум (Сообщение 550374)
Разве в документации что-то непонятно написано? - https://developer.mozilla.org/ru/doc...ts/Array/every

["a", "b", "c", "d"].every(
 (el, ind, arr) => {
    console.log("el=" + el, "ind=" + ind, "arr=" + arr);
    return true;
 }
);

К описанию у меня нет вопросов, я уже сдался это не так важно, просто я по другому не могу объяснить как я воспринимаю логику этого кода. Мне проще запомнить что это работает так и все.

Если только JS думает так есть массив иду по индексам, смотрю что находится в этом индексе, "запомнил" беру следующий массив иди по индексам и уже после этого сравниваю что находится в этом индексе.

В коде то просто написано 1 как значение сравни с 0 как с положением массива.

voraa 02.02.2023 22:09

Цитата:

Сообщение от Сергей Ракипов
В коде то просто написано 1 как значение сравни с 0 как с положением массива.

В коде написано
Цитата:

Сообщение от Сергей Ракипов
el === secondArray[ind]

el - значение из первого массива, secondArray[ind] - значение по индексу ind из второго массива
ind - индекс
secondArray[ind] - значение по этому индексу

Сергей Ракипов 02.02.2023 22:57

Спасибо что помогаете разобраться.

Белый шум 03.02.2023 06:31

Цитата:

Сообщение от Сергей Ракипов (Сообщение 550395)
Если только JS думает так есть массив иду по индексам, смотрю что находится в этом индексе, "запомнил" беру следующий массив иди по индексам и уже после этого сравниваю что находится в этом индексе.

По индексам массива идёт только функция every:
Код:

firstArray.every( )
И только по индексам одного массива - того, который указан перед ней через точку. Т.е. в данном случае она идёт по индексам массива firstArray.

И когда она проходит по индексам этого массива, она запускает для каждого его элемента функцию, которую ей передали в качестве параметра. В вашем случае это стрелочная функция:
Код:

(el, ind) => el === secondArray[ind]
где (el, ind) - это параметры данной функции. Значения в эти параметры передаёт every (при каждом запуске этой стрелочной функции значения будут разными).

Вот и вся логика. По индексам второго массива никто не проходит.

MallSerg 03.02.2023 08:33

Цитата:

И вот из первого дома я имею жильца 1 А из второго дома я беру номер квартиры
В этом утверждении содержится логическая ошибка которая приводит к ошибочным выводам.
С точки зрения формальной логики это нарушение третьего закона логики "Исключенный третий" т.е. понятие "беру номер квартиры" не верно и не может использоваться в логическом рассуждении потому что фактически используется синтаксическая конструкция которая представлена выражением и уже в этом выражении используется так называемое "беру номер квартиры" как часть этого выражения возвращающего жильца.
Т.е. вместо целого используемого выражения в логике используется только его часть это и есть то самое "подмена понятия".

voraa 03.02.2023 11:49

На самом деле это надо читать так
И вот из первого дома я имею жильца 1. А из второго дома я беру номер квартиры

Сергей Ракипов 04.02.2023 04:06

Цитата:

Сообщение от MallSerg (Сообщение 550432)
С точки зрения формальной логики это нарушение третьего закона логики "[url="https://www.google.com/search?q=%D0%98%D1%81%D0%BA%D0%BB%D1%8E%D1%87%D0%B 5%D0%BD%D0%BD%D1%8B%D0%B9+%D1%82%D1%80%D0%B5%D1%82 %D0%B8%D0%B9&sourceid=chrome&ie=UTF-8"].

спасибо почитал

Сергей Ракипов 04.02.2023 04:48

Скажу сразу код работает просто не до конца понимаю.

const inputProducts = [
  {
    title: 'Phone case',
    price: 23,
    quantity: 2,
    category: 'Accessories',
  },
  {
    title: 'Android phone',
    price: 150,
    quantity: 1,
    category: 'Phones',
  },
  {
    title: 'Headphones',
    price: 78,
    quantity: 1,
    category: 'Accessories',
  },
  {
    title: 'Sport Watch',
    price: 55,
    quantity: 2,
    category: 'Watches',
  },
]

const quantitiesByCategories = (products) => {

  return products.reduce((qtyByCategories, product) => {

    const {category, quantity} = product

    qtyByCategories[product.category] =  (qtyByCategories[product.category] || 0) + product.quantity

    return qtyByCategories
    
  }, [])
}  

console.log(quantitiesByCategories(inputProducts))


1) Как вот этот параметр product понял что он будет объектом этого массива inputProducts

2) Почему [product.category] решило что она возьмет значение этого свойства category: 'Accessories' и станет ключом нового объекта

3) Как происходит суммирование quantity за счет этой записи (qtyByCategories[product.category] || 0) + product.quantity


Часовой пояс GMT +3, время: 22:39.