问题描述
我是编程新手,我是从JS开始的,我必须使用嵌套的for循环,然后使用startsWith()字符串方法将以“ M”开头的名称打印到控制台,如下所示:>
是时候再次打印所有以'M'开头的名称了。仅这次使用嵌套的for循环冷却器。提示:您已经知道一些可以帮助您完成此任务的字符串方法。我们从未谈论过的一个是startsWith()。你能猜出它做什么吗?
function updateAt(index,value,arr) { return [ ...arr.slice(0,index),...arr.slice(index + 1,arr.length) ]; } function Output({ name,list }) { return ( <pre style={{ whiteSpace: "pre-wrap" }}> <span>name: {name + "\n"}</span> <span> list: {list.join(" - ")}</span> </pre> ); } export default function App() { let [state,setState] = React.useState({ courses: { courseA: ["section 1","section 2","section 3"],courseB: ["section 1","section 3"] } }); let courses = Object.entries(state.courses); return ( <div> {courses.map(([course,list]) => ( <> <div> {list.map((v,index) => ( <input type="text" name={course} value={v} onChange={e => { let { value } = e.target; setState(s => ({ ...s,courses: { ...s.courses,[course]: updateAt(index,s.courses[course]) } })); }} /> ))} </div> <Output name={course} list={list} /> </> ))} </div> ); }
这是我想出的,它将所有以'M'开头的名称打印到控制台,但一直这样说:
代码不正确
if语句的条件不正确。确保您访问的是每个数组的正确元素,并且使用的是我们正确建议的方法。
接下来我可以尝试什么?
解决方法
看起来,您需要使用
filmCharacters[i][j].startsWith('M')
没有进行任何其他检查,是否为true
。 String#startsWith
返回布尔值。
var filmCharacters = [['Vito','Michael','Sonny','Freddo'],['Mia','Vincent','Jules','Butch'],['Bella','Edward','Jacob','Carlisle'],['James','M','Moneypenny','Felix']];
for (var i = 0; i < filmCharacters.length; i++) {
for (var j = 0; j < filmCharacters[i].length; j++) {
if (filmCharacters[i][j].startsWith('M')) {
console.log(filmCharacters[i][j]);
}
}
}