学习JavaScript:显示所有以B为首字母的名字

时间:2018-06-29 12:12:21

标签: javascript

我是第一次学习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);
  }
}

但是此代码未显示任何内容。

5 个答案:

答案 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);
  }
})


for...of

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);
  }
}