type hereimport './App.css';
import { useState } from 'react';
function App() {
const [text, setText] = useState()
const People = {
name: 'jack'
}
const peoples = People.map(() => ({
nick: People.name
})
)
const funct = () =>{
if (text === peoples.nickname) {
console.info('worked')
} else {
console.info('not worked')
}
}
return (
<div>
<input onChange = {(event) => {setText(event.target.value)}}/>
<h1>{text}</h1>
<br />
<button onClick = {funct}>Click</button>
</div>
);
}
export default App;
Я надеюсь, что вы сможете решить мой вопрос и показать, в чем я ошибаюсь. Большое спасибо. Я только что попытался отобразить текст, и он все еще не работает, а также я попытался сделать текст объектом, но он все еще не работает.
Что People.map должен делать?
Кажется, это серия постоянных ошибок. Делайте это шаг за шагом в своем коде. Какую ценность вы ожидаете от peoples и почему? Когда вы отлаживаете, имеет ли это значение? Какую ценность вы ожидаете от peoples.nickname и почему? Когда вы отлаживаете, имеет ли это значение? В целом похоже, что вы понятия не имеете, какие данные вы вводите в свои переменные...



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы сравниваете массив со строкой, и из-за этого он не работает.
вам нужно обновить свой funct примерно так:
const funct = () =>{
peoples.forEach((p) => {
if (p.nickname === text) {
console.info('worked')
} else {
console.info('not worked')
}
})
}
на данный момент я не могу мне нужно иметь 15 репутации и т.д.
peoples не является массивом и p.nickname не существует
При попытке создать массив людей вы пытаетесь использовать карту для объекта. Это невозможно, так как вы можете использовать map только в массиве.
Чтобы исправить это, вы можете сделать что-то подобное, чтобы создать массив с новым объектом в нем, который содержит свойство nick со значением People.name
const peoples = [{ nick: People.name }];
Затем в операторе if вы проверяете peoples.nickname, в то время как мы только что создали объект со свойством, называемым nick.
if (text === peoples.nick) {
...
}
Теперь это еще не сработает. Как упоминалось в комментариях, вы сравниваете строку с массивом. Чтобы решить эту проблему, вы можете использовать какой-то цикл
const funct = () => {
for (const people of peoples) {
if (text === people.nick) {
console.info("worked");
} else {
console.info("did not work");
}
}
};
Или мы можем использовать функцию every, чтобы проверить, соответствуют ли все люди в массиве значению text.
const funct = () => {
const allPeoplesValidNick = peoples.every((people) => people.nick === text);
if (allPeoplesValidNick) {
console.info("worked");
} else {
console.info("not worked");
}
};
Вы сравниваете строку с массивом. Это не сработает. НО перед этим вы пытаетесь сопоставить объект? Ваш объект
Peopleдолжен быть массивом объектов??