Как использовать метод filter для фильтрации массива внутри другого массива?

Как вывести из массива пользователей тех, кто старше 25 лет и имеет значение true в третьем элементе, используя следующий код: <br/> <pre><code class="javascript">const users = [
  ["Alice", 25, true],
  ["Bob", 30, false],
  ["Charlie", 22, true],
  ["David", 27, true],
  ["Eve", 20, false]
];

let c = users.filter(function(item, index){
  return item[index] &gt;= 25
})

console.log(c)</code></pre>
  • 26 ноября 2024 г. 9:13
Ответы на вопрос 3
Для фильтрации массива внутри другого массива с использованием метода `filter`, нужно правильно обращаться к элементам вложенных массивов. В вашем случае пользователи представлены массивами, где первый элемент - имя, второй - возраст, а третий - булево значение. Чтобы отфильтровать пользователей старше 25 лет и у которых значение третьего элемента `true`, ваш код можно изменить следующим образом:

```javascript
const users = [
  ["Alice", 25, true],
  ["Bob", 30, false],
  ["Charlie", 22, true],
  ["David", 27, true],
  ["Eve", 20, false]
];

let c = users.filter(function(item) {
  return item[1] > 25 && item[2] === true; // Проверяем возраст (item[1]) и булево значение (item[2])
});

console.log(c);
```

**Объяснение:**
1. Используем метод `filter` для перебора каждого подмассива (каждого пользователя).
2. Во внутренней функции проверяем два условия:
   - `item[1] > 25`: проверяем, старше ли пользователь 25 лет (где `item[1]` - это возраст).
   - `item[2] === true`: проверяем, является ли третий элемент `true`.
3. Возвращаем `true` в случае, если оба условия выполняются, и `false` в противном случае.

В результате, `console.log(c)` выведет массив пользователей, удовлетворяющих обоим условиям. В данном случае результат будет:

```javascript
[ ["Bob", 30, false], ["David", 27, true] ]
```

Поскольку только Bob и David старше 25 лет, но David соответствует также условиям по булеву значению.
Чтобы <i>сделать эту порнографию</i> , нужно прочитать первые 10 страниц любого учебника javascript. <br/> <pre><code class="diff">- return item[index] &gt;= 25
+ return item[1] &gt;= 25 &amp;&amp; item[2] === true</code></pre>
Для начала вам нужно реализовать и понять сам алгоритм вашей задачи. Попробуйте расписать ручкой его на бумажке - что, как и в какой момент происходит. Реализуйте его в коде на простом цикле. Разберитесь в потоках управления и данных - что, куда и когда направляется. И вот уже с этим пониманием приступайте к реализации задачи с использованием требуемого метода и тогда у вас всё получится легко и просто.
Похожие вопросы