Javascript React组件的内部循环功能
(React web应用程序开发) 为了检查产品的当前库存状态,我使用产品ID来循环json数据。 我试图从json(如下)中通过键(id)检索“DATAPAYLOAD”的值。idsent是从另一个组件传递的字符串。但是“if(Data.response[i].id==idsent)”这个条件总是显示为false,因为我在控制台中得到了“failed”。 如果有人能看一下下面的代码并给我一些提示,那将非常有帮助,提前谢谢Javascript React组件的内部循环功能,javascript,reactjs,Javascript,Reactjs,(React web应用程序开发) 为了检查产品的当前库存状态,我使用产品ID来循环json数据。 我试图从json(如下)中通过键(id)检索“DATAPAYLOAD”的值。idsent是从另一个组件传递的字符串。但是“if(Data.response[i].id==idsent)”这个条件总是显示为false,因为我在控制台中得到了“failed”。 如果有人能看一下下面的代码并给我一些提示,那将非常有帮助,提前谢谢 onButtonClicked = () => {
onButtonClicked = () => {
const idsent="D56F36C6038DFC8244F"
for (var i = 0; i < Data.response.length; i++) {
if (Data.response[i].id === idsent) {
name = Data.response[i].DATAPAYLOAD;
const word = '<INSTOCKVALUE>INSTOCK</INSTOCKVALUE>';
if (name.includes(word)) {
return true;
}
else {
return false;
}
}
console.log("failed");
}
再次感谢您。您可能想要
console.log(“失败”)
在for
循环之外,如下所示(这样它只在处理完所有数据后执行):
onButtonClicked=()=>{
const idsent=“D56F36C6038DFC8244F”
对于(var i=0;i
获取成功后,需要使用json()读取和解析数据。请读取
onButtonClicked=async()=>{
const idsent=“D56F36C6038DFC8244F”
Data=wait Data.json();//json()将创建一个承诺
对于(var i=0;i
您失败的原因是,第一次通过时,ID与发送的ID不匹配,因此控制台会记录“失败”消息。然后,第二次通过for循环时,它与数据匹配,然后点击下一个if,检查值。由于您正在搜索的值包含在数据中,因此它返回true,for循环退出。您看到失败日志的原因是,当id不匹配时,您正在记录,并且其中有3条记录在id不匹配的数组中,第一个id就是其中之一。首先,你的代码很难理解你想完成什么。你能告诉我一些你想做什么吗?你想解决什么问题?谢谢你的回答。这个问题是通过重新检查数据结构来解决的。somehow,我可以在js上循环数据,但需要替换数据中的所有符号(例如\n,空格…),以便在React上成功循环。你说得对!我移动了console.log()进入if状态。谢谢。您好@Henry,我看到您是SO的新手。如果您觉得某个答案解决了问题,请单击绿色复选标记将其标记为“已接受”。这有助于将重点放在仍然没有答案的较老SO上。谢谢您的提醒!
Data= {
"code": 200,
"response": [
{
"id": "CED62C6F96BD0E21655142F",
"DATAPAYLOAD": "<AVAILABILITY>\n <CODE>200</CODE>\n
<INSTOCKVALUE>OUTOFSTOCK</INSTOCKVALUE>\n</AVAILABILITY>"
},
{
"id": "D56F36C6038DFC8244F",
"DATAPAYLOAD": "<AVAILABILITY>\n <CODE>200</CODE>\n
<INSTOCKVALUE>LESSTHAN10</INSTOCKVALUE>\n</AVAILABILITY>"
},
{
"id": "4536C9E608B563A749",
"DATAPAYLOAD": "<AVAILABILITY>\n <CODE>200</CODE>\n
<INSTOCKVALUE>INSTOCK</INSTOCKVALUE>\n</AVAILABILITY>"
},
{
"id": "3A576872130625CABFADEE68",
"DATAPAYLOAD": "<AVAILABILITY>\n <CODE>200</CODE>\n
<INSTOCKVALUE>INSTOCK</INSTOCKVALUE>\n</AVAILABILITY>"
}
]
}
onButtonClicked = () => {
const idsent="D56F36C6038DFC8244F"
for (var i = 0; i < Data.response.length; i++) {
if (Data.response[i].id === idsent) {
name = Data.response[i].DATAPAYLOAD;
const word = '<INSTOCKVALUE>INSTOCK</INSTOCKVALUE>';
if (name.includes(word)) {
return true;
}
else {
return false;
}
}
}
console.log("failed");
onButtonClicked = async () => {
const idsent="D56F36C6038DFC8244F"
Data = await Data.json(); // json() will create a promise
for (var i = 0; i < Data.response.length; i++) {
if (Data.response[i].id === idsent) {
name = Data.response[i].DATAPAYLOAD;
const word = '<INSTOCKVALUE>INSTOCK</INSTOCKVALUE>';
if (name.includes(word)) {
return true;
}
else {
return false;
}
}
console.log("failed");
}