Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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语句?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何在映射函数中使用If语句?

Javascript 如何在映射函数中使用If语句?,javascript,reactjs,Javascript,Reactjs,仅当对象['Size/scale of support']时,我才使用map函数分配和填充表名。等于我使用道具传递的数据。我似乎已经得到了正确的逻辑,但地图不允许我使用我的if语句。有没有办法在map函数中使用if语句 updateData(result) { const data = result.data; console.log(data); let new_data = [] data.map(

仅当对象['Size/scale of support']时,我才使用map函数分配和填充表名。等于我使用道具传递的数据。我似乎已经得到了正确的逻辑,但地图不允许我使用我的if语句。有没有办法在map函数中使用if语句

    updateData(result) {
        const data = result.data;
        console.log(data);
        let new_data = []
        data.map(
            (object) => {

                if (object['Size/ scale of support'].toLowerCase() === this.props.data.toLowerCase()) {
                    console.log("support",object['Size/ scale of support'])
                new_data.push(
                    {
                        scale_of_support : object['Size/ scale of support'],
                        size_of_funding_instrument : object['Size of funding instrument'],
                        maturity_of_innovation_candidate : object['Maturity of innovation/ candidate'],
                        maturity_of_innovation_innovator : object['Maturity of innovation/ innovator'],
                        web_and_profile : object['Web and profile'],
                        source_of_information : object['Source of information'],
                        funding_instrument_name : object['Funding instrument name'],



                    }
                )
                }
            }
        )

        this.setState({ cvs: new_data });

       
    }
此代码适用于:

var foo = [1,2,3];
foo.map(item => {
    if (item === 2) console.log(item * 2);
    return item;
});
这证明了你的代码是正确的。如果使用Typescript/Lint,则可能会因此遇到错误。如果是这种情况,您有几个选项可以解决它:

重构 您可以重构代码,编写一个执行条件及其操作的函数,并且只从映射内部调用该函数

三元运算符 也可以使用三元运算符,如:

mycondition ? myFunction() : myOtherValue;

map的要点是将现有数组的内容转换为新数组。如果要用自己的代码构建新数组,请不要使用.map,而是使用.forEach。不允许我使用If语句意味着什么?它如何阻止您使用if inside map?另外,为什么要在这里使用.map,您需要一个for循环或forEach。或者使用let new_data=data.map….filteritem=>!!项或使用reduce创建新数组。不允许我使用if语句是什么意思?除非您使用的是typescript,否则此代码不会抛出错误。这不是使用map的正确方法,但也不是错误。这个答案没有提醒OP使用map的副作用。显然,这是一种获得认可和支持的好方法,因为它需要最少的工作量,但它也为逻辑错误和持续滥用语言特征打开了潜在的答案。我认为这个答案在技术上是正确的。我想知道为什么我们会认为这是滥用语言。语言不是一个可以被滥用的人:@AjeetShah谢谢你的洞察力。是的,一个比较不会影响答案的质量,当我找到时间的时候,我可能会加上这样的比较,但我发现有些人认为正确的答案被接受是无济于事的。我相信编码约定一般来说是好的,但是当人们谈到由于使用map函数而滥用该语言时,显然是出了问题。map创建了一个数组的副本,在目标数组中具有相同数量的元素,但是它的项通过传递给map的函数进行转换,与它们的原始对应项进行比较。从数组的角度来看,这是一个只读操作。forEach遍历数组。我认为两者都不比另一个优越。它们既有帮助又有用,并且偏好(如果合理确定)取决于实际用例。