我是第一次学习JavaScript,我想知道为什么我的代码不起作用。 我有Python / Django知识。
我必须创建一个名称列表,并且只显示以'B'字母开头的名字。
var listNames = ['Paul', 'Bruno', 'Arthur', 'Bert', 'José']
for (var i in listNames) {
if (i.substr(0, 1) === 'B') {
console.log(i);
}
}
但是此代码未显示任何内容。
答案 0 :(得分:8)
您需要使用listNames[i]
,因为i
为数组index
提供了listNames
。然后使用charAt(0)
作为数组的值来检查第一个字符为B
。
var listNames = ['Paul', 'Bruno', 'Arthur', 'Bert', 'José']
for (var i in listNames) {
if (listNames[i].charAt(0) === 'B') {
console.log(listNames[i]);
}
}
如果要在代码中进一步使用以B
开头的数组的值作为单独的数组,请使用filter()
:
var listNames = ['Paul', 'Bruno', 'Arthur', 'Bert', 'José']
var res = listNames.filter(item => item.charAt(0) === 'B');
console.log(res);
答案 1 :(得分:5)
您应该使用forEach
而不是for...in
,因为它是用于迭代对象的
i.substr(0, 1) === 'B'
可以替换为i.startsWith('B')
var listNames = ['Paul', 'Bruno', 'Arthur', 'Bert', 'José']
listNames.forEach( i => {
if (i.startsWith('B')) {
console.log(i);
}
})
var listNames = ['Paul', 'Bruno', 'Arthur', 'Bert', 'José']
for (i of listNames) {
if (i.startsWith('B')) {
console.log(i);
}
}
另一种选择是使用filter()
并将原始数组缩小为新数组。
var listNames = ['Paul', 'Bruno', 'Arthur', 'Bert', 'José']
var new_listNames = listNames.filter( i => i.startsWith('B') )
console.log(new_listNames);
答案 2 :(得分:2)
尝试一下:
listNames.forEach((el) => {if (el.charAt(0) == 'B') console.log(el)});
答案 3 :(得分:1)
使用for...of循环遍历数组。
const listNames = ['Paul', 'Bruno', 'Arthur', 'Bert', 'José']
for (const name of listNames) {
if (name[0] === "B") {
console.log(name);
}
}
答案 4 :(得分:0)
尝试一下
FILE*
var listNames = ['Paul', 'Bruno', 'Arthur', 'Bert', 'José']
for (var i of listNames) {
if (i.substr(0, 1) === 'B') {
console.log(i);
}
}