Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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 if-else内部映射函数_Javascript_Reactjs_Dictionary - Fatal编程技术网

Javascript if-else内部映射函数

Javascript if-else内部映射函数,javascript,reactjs,dictionary,Javascript,Reactjs,Dictionary,我有一个错误: 无法读取未定义的属性“map” 我的JSON数据: { "data": [ { "id": 1, "attention": 1 }, { "id": 2, "attention": 1 }, { "id": 3, "attention": 0

我有一个错误:

无法读取未定义的属性“map”

我的JSON数据:

{
    "data": [
        {
            "id": 1,
            "attention": 1
        },
        {
            "id": 2,
            "attention": 1
        },
        {
            "id": 3,
            "attention": 0
        }
    ]
}
_handleOutput() {
    var att = data.attention.map(function (data) {
      return data.attention
    });
}
console.log(att)
是否可以使用if-else将JSON输出数据与React
DOM
进行比较?大概是这样的:

if (data.attention === true || "1") {
    return <span>&#9989;</span>;
} else {
    return <span>&#10060;</span>;
}
if(data.attention==true | |“1”){
返回✅;;
}否则{
返回❌;;
}
然后我将输出到表list
{this.\u handleOutput()}

内部组件定义渲染函数

render(){
return (
    <div>
     {obj.data.map(a=>{
      if(a.attention===1) 
       return <span>&#9989;</span>

       return <span>&#10060;</span>;  
     })}
    </div> 
  )
  }
render(){
返回(
{obj.data.map(a=>{
如果(注意===1)
返回✅;
返回❌;;
})}
)
}

数据
数组
,而不是
数据。注意
,此
地图
不起作用<代码>映射正在数组中工作。

您正在尝试调用数字字段上的映射。它应该是
data.map

数据是您的数组而不是数据。注意。因此,请这样使用:

 {
        "data": [
            {
                "id": 1,
                "attention": 1
            },
            {
                "id": 2,
                "attention": 2
            },
            {
                "id": 3,
                "attention": 0
            }
        ]
    }

    var att = data.map(function (data) {
      return data.attention
    });
    console.log(att)
var数据=[
{
“id”:1,
“注意”:1
},
{
“id”:2,
“注意”:2
},
{
“id”:3,
“注意”:0
}
]
var att=data.map(数据=>{
控制台日志(数据);
如果(data.attention==1){
返回“✅;”;
}否则{
返回“非源”;
}
});
控制台日志(att);

尝试解决方案中的错误

  • data.attention不是数组
  • 直接使用值1进行检查
  • 解决方案

    • 用于返回jsx元素的副本
    • 在数组中循环时使用,而不是写入item.attention
    • 检查值,所以基本上我们可以使用三元检查(真?1:0),因为注意值是1或0,表示真或假,我们可以这样使用它
    改进注意事项

    • 您可以使用
    const jsonData={
    “数据”:[{
    “id”:1,
    “注意”:1
    },
    {
    “id”:2,
    “注意”:1
    },
    {
    “id”:3,
    “注意”:0
    }
    ]
    }
    常量应用=()=>{
    报税表(
    {
    jsonData.data.map(({attention})=>{
    返回(
    {
    注意:;
    :
    ❌
    }
    )
    })
    }
    )
    }
    ReactDOM.render(,document.getElementById('root'))
    
    
    确保可以在闭包中使用控制结构。但是您的问题可能是条件
    data.attention==true | |“1”
    。这不是你想的那样。你不能走这样的捷径。你必须写
    data.attention===true | | data.attention===“1”
    或类似的东西…
    数据。attention
    是错误的:1。这里没有定义
    数据
    变量。2.您有一个具有属性数据的对象,因此必须执行
    obj.data
    。3. <代码>注意也不是数组的属性。@android1751在react中,您可以这样定义,而不是将其添加为答案。您有足够的声誉来评论一行。除非是代码片段或较长的描述,否则尽量不要增加答案部分。@AyushiKeshri感谢您的建议。我总是尝试添加代码段,但对于一些办公室工作来说,这是不可能的。
     {
            "data": [
                {
                    "id": 1,
                    "attention": 1
                },
                {
                    "id": 2,
                    "attention": 2
                },
                {
                    "id": 3,
                    "attention": 0
                }
            ]
        }
    
        var att = data.map(function (data) {
          return data.attention
        });
        console.log(att)
    
    var data = [
        {
            "id": 1,
            "attention": 1
        },
        {
            "id": 2,
            "attention": 2
        },
        {
            "id": 3,
            "attention": 0
        }
    ]
    
    var att = data.map(data => {
      console.log(data);
    
      if (data.attention === 1) {
        return '<span>&#9989;</span>';
      } else {
        return 'Not Fount';
      }
    });
    
    console.log(att);