Javascript 如何在映射函数中使用If语句?
仅当对象['Size/scale of support']时,我才使用map函数分配和填充表名。等于我使用道具传递的数据。我似乎已经得到了正确的逻辑,但地图不允许我使用我的if语句。有没有办法在map函数中使用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(
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遍历数组。我认为两者都不比另一个优越。它们既有帮助又有用,并且偏好(如果合理确定)取决于实际用例。