Что делает эта логика в JavaScript?

Я изучаю реакцию и наткнулся на учебник, в котором в JSX добавлена ​​​​кнопка удаления, и определена функция для выполнения события. Однако я смущен тем, что делает приведенный ниже код.

const deleteList=this.state.list.filter(item=>item.objectID!==id);

В частности, я смущен тем, что означает следующая логика:

(item=>item.objectID!==id);
filter фильтрует элементы массива, не соответствующие условию. и условие состоит в том, что он ищет определенный идентификатор.
samb102 06.03.2019 10:02

Мне трудно понять, почему это было непонятно, просто запустив код и прочитав некоторые документы.

Dave Newton 06.03.2019 15:18
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
2
61
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Это похоже на

function(item) {
   return item.objectID!==id
}

В основном отфильтруйте все элементы, где id не равен item.objectID

Как это происходит? Я имею в виду, когда id не равен objectID?

user11066242 06.03.2019 10:11

В основном ваши данные отображаются из списка массивов, поэтому, когда вы нажимаете кнопку «Удалить», вы хотите удалить этот элемент из списка массивов. Таким образом, вы передаете идентификатор элемента, для которого вы инициировали удаление. Итак, задачи состоят в том, чтобы отфильтровать все элементы, кроме того, на котором вы нажали удалить.

dev 06.03.2019 11:18
Ответ принят как подходящий
this.state.list.filter(item=>item.objectID!==id);

Эта часть перебирает все элементы в list и возвращает новый массив, содержащий только элементы, соответствующие условию item.objectID!==id Это общий синтаксис для удаления одного элемента списка.

См. документация метода filter.

Как это происходит? Я имею в виду, когда id не равен objectID?

user11066242 06.03.2019 10:25

Для лучшего понимания поясняю на примере. см. приведенный ниже код: -

import React, { Component } from 'react';

class App extends Component {
  constructor(props) {
    super(props);

    this.state = {
      list: [
        { id: '1', age: 42 },
        { id: '2', age: 33 },
        { id: '3', age: 68 },
      ],
    };
  }

  onRemoveItem = id => {
    this.setState(state => {
      const list = state.list.filter(item => item.objectID !== id);

      return {
        list,
      };
    });
  };

  render() {
    return (
      <div>
        <ul>
          {this.state.list.map(item => (
            <li key = {item.objectID}>
              The person is {item.age} years old.
              <button
                type = "button"
                onClick = {() => this.onRemoveItem(item.objectID)}
              >
                Remove
              </button>
            </li>
          ))}
        </ul>
      </div>
    );
  }
}

export default App;

Над кодом у нас есть массив объектов состояния React (т. е. objectid и age). при определении методов onRemoveItem я бы является параметром.

когда методы onRemoveItem вызываются для события нажатия кнопки, item.objectID передается в качестве параметра.

onRemoveItem = id => {
        this.setState(state => {
          const list = state.list.filter(item => item.objectID !== id);

Здесь мы фильтруем элемент из массива состояний React, идентификатор объекта которого равен id, а id — не что иное, как идентификатор объекта, который передается в качестве параметра при вызове метода onRemoveItem.

Другие вопросы по теме