Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React组件的内部循环功能_Javascript_Reactjs - Fatal编程技术网

Javascript React组件的内部循环功能

Javascript React组件的内部循环功能,javascript,reactjs,Javascript,Reactjs,(React web应用程序开发) 为了检查产品的当前库存状态,我使用产品ID来循环json数据。 我试图从json(如下)中通过键(id)检索“DATAPAYLOAD”的值。idsent是从另一个组件传递的字符串。但是“if(Data.response[i].id==idsent)”这个条件总是显示为false,因为我在控制台中得到了“failed”。 如果有人能看一下下面的代码并给我一些提示,那将非常有帮助,提前谢谢 onButtonClicked = () => {

(React web应用程序开发) 为了检查产品的当前库存状态,我使用产品ID来循环json数据。 我试图从json(如下)中通过键(id)检索“DATAPAYLOAD”的值。idsent是从另一个组件传递的字符串。但是“if(Data.response[i].id==idsent)”这个条件总是显示为false,因为我在控制台中得到了“failed”。 如果有人能看一下下面的代码并给我一些提示,那将非常有帮助,提前谢谢

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");
        }