Javascript 尝试使用map方法而不是使用React-Typescript的for循环
我尝试使用map方法use而不是for循环,在下面的代码中使用React-Typescript,但不起作用 使用for循环的实际代码:Javascript 尝试使用map方法而不是使用React-Typescript的for循环,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我尝试使用map方法use而不是for循环,在下面的代码中使用React-Typescript,但不起作用 使用for循环的实际代码: renderFunction(perkProgressData) { let tiers = []; let currentData = { item: {} } const data = perkProgressData.perkProgressData if (data && data.program &
renderFunction(perkProgressData) {
let tiers = [];
let currentData = { item: {} }
const data = perkProgressData.perkProgressData
if (data && data.program && data.program.tiers) {
tiers = data.program.tiers
**for (let i = 0; i < tiers.length; i++) {**
if (tiers[i].tierPerks[0].perkStatus === "UNCLAIMED" ||
data.currentTierId === tiers[i].tierId) {
currentData = { item: tiers[i] }
break;
}
}
}
map
在这里不是正确的选择,您不需要它创建的新数组。另外,您希望提前停止,这是map
无法做到的(除非抛出错误)
<> > <>代码>循环,虽然您不使用索引:,但是您可以考虑< <代码> > <代码> >
renderFunction(perkProgressData) {
let tiers = [];
let currentData = { item: {} };
const data = perkProgressData.perkProgressData;
if (data && data.program && data.program.tiers) {
tiers = data.program.tiers;
for (const tier of tiers) {
if (tier.tierPerks[0].perkStatus === "UNCLAIMED" ||
data.currentTierId === tier.tierId) {
currentData = { item: tier };
break;
}
}
}
// ...
或者,如果循环后不需要层
:
renderFunction(perkProgressData) {
let currentData = { item: {} };
const data = perkProgressData.perkProgressData;
if (data && data.program && data.program.tiers) {
for (const tier of data.program.tiers) {
if (tier.tierPerks[0].perkStatus === "UNCLAIMED" ||
data.currentTierId === tier.tierId) {
currentData = { item: tier };
break;
}
}
}
// ...
如果您真的想使用数组方法,那么:
renderFunction(perkProgressData) {
const data = perkProgressData.perkProgressData
let currentData =
( data &&
data.program &&
data.program.tiers &&
data.program.tiers.find(tier =>
tier.tierPerks[0].perkStatus === "UNCLAIMED" || data.currentTierId === tier.tierId
)
) || { item: {} };
// ...
没有理由在该代码中使用
map
。您不需要它创建的新数组。MAP返回一个新数组,但for循环不返回。你需要新的数组吗?如果出于某种原因你不想在循环中使用,你可以使用forEach
,但绝对不能使用map
。是的,最好在循环中使用forEach
case@Konstantin-嗯,OP希望尽早打破循环(至少,他们正在替换的代码是这样的),因此,这将更像是一件事。但实际上,他们所做的是在数组中查找某些内容,所以find
。但令人不安的是,在过去的18-24个月里,我看到了很多这种“map
作为循环数组的一般方式”的误解。一定是有人教错了。非常感谢你帮助我T.J.克劳德,这很有效
renderFunction(perkProgressData) {
const data = perkProgressData.perkProgressData
let currentData =
( data &&
data.program &&
data.program.tiers &&
data.program.tiers.find(tier =>
tier.tierPerks[0].perkStatus === "UNCLAIMED" || data.currentTierId === tier.tierId
)
) || { item: {} };
// ...