javascript - 通过数组映射的 Switch 语句给出无法访问的代码警告
问题描述
这可能是我想念的一个非常简单的解决方案,但希望有人能提供帮助。
我正在遍历一个数组并试图找出它的长度,并根据长度返回不同的值。然后我映射它并希望根据数量返回值。有人可以告诉我我做错了什么吗?
谢谢!
编辑 谢谢大家的意见。我打算对 switch 语句结果做的是根据 getGridPercentages 数组值确定网格大小。因此,如果它是“4”,它将返回“25% 25% 25% 25%”。
然后,我使用 CSS 网格的 grid-template-columns 在样式化组件中使用该值:
const ContainerWrapper = styled.div `
display: grid;
grid-template-columns: ${op}; //Value of grid here
grid-gap: 10px;
`;
const getGridPercentages = [
{
Text: '1'
},
{
Text: '2'
},
{
Text: '3'
},
{
Text: '4'
}
]
let op = getGridPercentages.map(function(item) {
const getAmount = item.Text;
switch(getAmount) {
case '1':
return '100%'
case '2':
return '50% 50%'
case '3':
return '33% 33% 33%'
case '4':
return '25% 25% 25% 25%'
default:
return 1
}
});
解决方案
您应该进行这些更改
- 当您尝试查找单个字符的长度时,item.Text.length 将始终返回 1。
- return 语句后不需要 break 语句。(这是无法访问的代码的样子)
const getGridPercentages = [
{
Text: '1'
},
{
Text: '2'
},
{
Text: '3'
},
{
Text: '4'
}
]
let op = getGridPercentages.map(function(item) {
const getAmount = item.Text;
switch(getAmount) {
case '1':
return '100%'
case '2':
return '50% 50%'
case '3':
return '33% 33% 33%'
case '4':
return '25% 25% 25% 25%'
default:
return 1
}
});
console.log(op);
更新:正如您在评论中根据与问题所说的完全相反的元素数量提出的要求。
const getGridPercentages = [
{
Text: '1'
},
{
Text: '2'
},
{
Text: '3'
},
{
Text: '4'
}
]
function getGridSize(arr){
switch(arr.length) {
case 1:
return '100%'
case 2:
return '50% 50%'
case 3:
return '33% 33% 33%'
case 4:
return '25% 25% 25% 25%'
default:
return 1
}
}
console.log(getGridSize(getGridPercentages))
推荐阅读
- javascript - 使用原生 js 设置数据属性
- shell - 如果文件不存在则退出 shell 脚本
- javascript - 来自对象的 vue 插槽和 HTML
- r - 如何基于多元逻辑回归模型(glm)的p值(0.05)进行反向消除
- vue.js - 在 Vue Router 中使用 Vue Router replace 和 route redirect 的区别
- php - 如何使用 NelmioApiDocBundle 为 Symfony 中的唯一区域设置 @SWG\Info 注释
- ios - Visual Studio:iOS 模拟器从今天开始消失
- c++ - 好友功能无法访问私人会员
- java - 对数组进行排序时,如果值相同,如何分配共享序号后缀?
- c++ - vector 的 emplace_back - 作为构造函数参数的向量