const recieved = [
{
"name": "1PM Industries Inc ",
"series": [
{
"value": 0.0001,
"name": "2019-08-30"
},
{
"value": 0,
"name": "2019-08-28"
}
]
}
]
let output = recieved.map(o=>{
let data = o.series.map((i)=>{ return {x: i.value, y: i.name}});
return {id: o.name, data}
});
console.log(output)
我正在学习开关,并且正在尝试这个问题,我应该传递一个字符串,并且如果字符串的第一个字母是任何元素,则函数getLetter()应该返回“ A”在数组A中。与数组B,C,D类似。我尝试了上面的代码,但返回未定义。我在做什么错了?
答案 0 :(得分:3)
您需要检查布尔值,例如true
,因为您使用的是includes
,它返回true
或false
。
顺便说一句,通过在每个return
中使用case
,您可以省略break
,因为该函数以return
退出,而function getLetter(s) {
let letter = s[0];
// Write your code here
let A = ['a', 'e', 'i', 'o', 'u'];
let B = ['b', 'c', 'd', 'f', 'g'];
let C = ['h', 'j', 'k', 'l', 'm'];
let D = ['n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z'];
switch (true) { // <-- boolean value with strict comparison ===
case A.includes(letter):
return 'A';
case B.includes(letter):
return 'B';
case C.includes(letter):
return 'C';
case D.includes(letter):
return 'D';
}
}
var s = 'adam',
t = getLetter(s);
console.log(t);
则退出switch
statement好吧。
messages
答案 1 :(得分:1)
您可以使用find
代替includes
,当您将字符传递给switch()
时,它会尝试将其与大小写匹配,因为includes
返回true/false
所以不会匹配任何情况
function getLetter(s) {
let letter = s[0];
let A = ['a', 'e', 'i', 'o', 'u'];
let B = ['b', 'c', 'd', 'f', 'g'];
let C = ['h', 'j', 'k', 'l', 'm'];
let D = ['n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z'];
switch (letter) {
case A.find(v => v === letter):
return 'A';
case B.find(v => v === letter):
return 'B';
case C.find(v => v === letter):
return 'C';
case D.find(v => v === letter):
return 'D';
}
}
s = 'adam';
t = getLetter(s);
console.log(t);