Как сохранить индекс объекта внутри массива?

Я пытаюсь закодировать визуальную реализацию «блокчейна» в React. Я хочу как-то удерживать внутри массива объектов (это мои блоки) индекс каждого объекта. Я не могу понять, как это сделать.

    this.state = {
      value: '',
      blocks: [{
        hash: calculateHash(1),
        timestamp: timeStamp(),
        dataOfBlock: 'Genesis Block',
        nounce: 607,
        index: 0
      }]
    }
  };

    addBlock = (event) => {
      event.preventDefault();

      this.setState({
      blocks: [...this.state.blocks, {
        hash: 'cos',
        timestamp: timeStamp(),      
        dataOfBlock: this.state.value,
        nounce: '',
        index: 1 // here's the problem
      }]
    })
    }

Мой код имитирует то, что я хочу сделать, где комментарий. Я хочу постоянно добавлять +1 к моему индексу с каждым блоком.

если вы всегда добавляете в конец массива, вы можете сделать индекс this.state.blocks.length, потому что длина предыдущего массива будет точкой индекса нового блока

pengcheng95 05.02.2019 18:59
index: this.state.blocks.length+1, предложение: используйте prevState вместо this.state внутри setState.
Mayank Shukla 05.02.2019 18:59

боже, это было так просто, спасибо

Kamil Staszewski 05.02.2019 19:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
48
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать length в качестве индекса нового объекта при добавлении нового объекта
Примечание: this.state.blocks.length будет следующим индексом, потому что индекс начинается с 0

blocks: [...this.state.blocks, {
        hash: 'cos',
        timestamp: timeStamp(),      
        dataOfBlock: this.state.value,
        nounce: '',
        index: this.state.blocks.length
      }]

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