AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 77423939
Accepted
JulesUK
JulesUK
Asked: 2023-11-05 05:50:00 +0800 CST2023-11-05 05:50:00 +0800 CST 2023-11-05 05:50:00 +0800 CST

Substituir um elemento no array é substituir todos os elementos do array?

  • 772

Eu tenho uma matriz que desejo pesquisar e apenas coloco um item que corresponda a uma pesquisa da seguinte forma: -

Array e exemplo de código:

const test = [
  { id: 0, title: 'test1', seen: false },
  { id: 1, title: 'test2', seen: false },
  { id: 2, title: 'test3', seen: true },
];

Preciso ser capaz de pesquisar o ID: 2 na matriz de teste e defini-lo como 'visto: verdadeiro'

Eu tentei :

const [testarray, testTestArray] = usestate(test);
const checkID = 2;

const updateStatus = (checkID) => {

    const new_data = testarray.data.map(id => {
    if (id === checkID) {
      // No change
      return id;
    } else {
      return {
        ...id,
        seen: true,
      };
    }
  });

  setTest(new_data);

Já brinquei com isso de diferentes maneiras e o mais próximo que cheguei foi mudar todas elas para 'visto: verdadeiro'?

O que não estou entendendo aqui?

Obrigado

arrays
  • 2 2 respostas
  • 43 Views

2 respostas

  • Voted
  1. Best Answer
    DecPK
    2023-11-05T15:08:32+08:002023-11-05T15:08:32+08:00

    Você está verificando idqual checkIDnunca será igual porque está comparando object(cada objeto individual na matriz) com number.

    Você deve compará-lo com id.idou para uma melhor convenção de nomenclatura obj.idcom checkID.

    CODESANDBOX

      const updateStatus = (checkID) => {
        console.log(checkID);
        const new_data = testarray.map((obj) => {
          if (obj.id === checkID) {
            return {
              ...obj,
              seen: true
            };
          } else {
            return obj;
          }
        });
    
        setTestArray(new_data);
      };
    

    Você pode simplificá-lo mais como:

      const updateStatus = (checkID) => {
        const new_data = testarray.map((obj) => ({
          ...obj,
          seen: obj.id === checkID ? true : obj.seen
        }));
    
        setTestArray(new_data);
      };
    
    • 2
  2. ltapia
    2023-11-05T06:55:01+08:002023-11-05T06:55:01+08:00

    Vamos consertar isso:

    const [array, setArray] = useState(test);
    const checkID = 2;
    
    const updateStatus = (checkID) => {
      const new_data =  array.map(item => {
        // here was the major mistake
        if (item.id === checkID) {
          return {
            ...item,
            seen: true,
          };
        } else {
          // No change
          return item;
        }
      });
      setArray(new_data);
    }
    

    Os erros foram:

    • Usando nomes diferentes.
    • não usando a propriedade do item, mas o próprio item em comparação.
    • Os blocos if-else foram invertidos em relação ao que é solicitado.

    Espero que tudo esteja entendido.

    • 0

relate perguntas

  • Possível inicializar um ponteiro de um valor na matriz de ponteiros?

  • Possível inicializar o ponteiro para a matriz de variáveis ​​digitadas?

  • Swift Array, como recuperar todos os elementos em uma enumeração aninhada de uma matriz

  • Por que uma string C nem sempre é equivalente a uma matriz de caracteres?

  • PowerShell: Como transformar valores de matriz hastable como este?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    destaque o código em HTML usando <font color="#xxx">

    • 2 respostas
  • Marko Smith

    Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}?

    • 1 respostas
  • Marko Smith

    Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)?

    • 2 respostas
  • Marko Smith

    Por que as compreensões de lista criam uma função internamente?

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 respostas
  • Marko Smith

    Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)?

    • 4 respostas
  • Marko Smith

    Por que o construtor de uma variável global não é chamado em uma biblioteca?

    • 1 respostas
  • Marko Smith

    Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto?

    • 1 respostas
  • Marko Smith

    Somente operações bit a bit para std::byte em C++ 17?

    • 1 respostas
  • Martin Hope
    fbrereto Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi Por que as compreensões de lista criam uma função internamente? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A formato fmt %H:%M:%S sem decimais 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python std::views::filter do C++20 não filtrando a visualização corretamente 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa Por que o construtor de uma variável global não é chamado em uma biblioteca? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev Por que os compiladores perdem a vetorização aqui? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan Somente operações bit a bit para std::byte em C++ 17? 2023-08-17 17:13:58 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve