Javascript 如何在JS中迭代数组?
我正在尝试编写一个函数,在其中迭代todos数组。如果todos有一个值,则返回该值,否则返回一个字符串,表示“还没有要做的事!”。但我不确定我是否正确编写了该函数,或者我将如何调用该函数Javascript 如何在JS中迭代数组?,javascript,Javascript,我正在尝试编写一个函数,在其中迭代todos数组。如果todos有一个值,则返回该值,否则返回一个字符串,表示“还没有要做的事!”。但我不确定我是否正确编写了该函数,或者我将如何调用该函数 const todos = [ {todo: 'Go to the gym', done: true}, {todo: 'Cook dinner', done: false}, {todo: 'Watch a movie', done: false} ]; todos.forEach
const todos = [
{todo: 'Go to the gym', done: true},
{todo: 'Cook dinner', done: false},
{todo: 'Watch a movie', done: false}
];
todos.forEach(function(t) {
if (todos.length === 0 ) {
return 'There are no To Dos yet!';
} else {
return t.todo;
}
});
请试试这个:
const todos = [
{todo: 'Go to the gym', done: true},
{todo: 'Cook dinner', done: false},
{todo: 'Watch a movie', done: false}
];
if (todos.length > 0) {
todos.forEach(function(t) {
console.log(t.todo);
});
}
else {
return 'There are no To Dos yet!';
}
您可以使用
Array.prototype来测试每个todo是否都已完成。every
:
const todos=[
{todo:'去健身房',完成:正确},
{todo:'做饭',完成:错误},
{todo:'看电影',完成:错误}
];
打印todos(todos);
todos.forEach(todo=>todo.done=true);//全部完成。。
打印todos(todos);
函数printtos(todos){
返回console.log(todos.every(todo=>todo.done)
“还没有要做的事!”
:todo.filter(todo=>!todo.done)
.map(todo=>'-'+todo.todo)
.join('\n'))
}
由于forEach不返回任何内容,请尝试返回已转换数组的.map()
const getTodos = todos => {
const result = todos.map(({ todo }) => todo);
return result.length ? result : "There are no todos yet";
}
getTodos(todos) // ["Go to the gym", "Cook dinner", "etc."]
getTodos([]) // "There are no todos yet"
如果只希望通过done
属性筛选TODO,请将筛选链接到它:
const getTodos = todos => {
const result = todos
.filter(todo => !todo.done)
.map(({ todo }) => todo)
return result.length ? result : "There are no todos yet";
}
getTodos(todos) // ["Go to the gym"]
getTodos([]) // "There are no todos yet"
您可以映射
togo
数组并将其连接到字符串或返回消息
const
getTodos=todos=>todos.map({todo})=>todo.join(“,”)| |“还没有要做的事!”,
todo=[{todo:'去健身房',完成:真},{todo:'做饭',完成:假},{todo:'看电影',完成:假}];
log(gettoos([]);
log(gettoos(todos))代码>要为给定数据返回什么?todo项如果有值,则字符串there NOS to dosforEach
仅在项目位于数组中时迭代。但是您想要返回什么?如果只有{todo:“mything”,done:true}
或者它是{todo:,done:false}
您想要返回值还是打印值呢?我这样问是因为您不能在forEach回调中返回值,但可以打印每个值t.todo
返回t.todo
没有意义。forEach的回调应该总是返回未定义的ie nothing@sahussai您想打印t.todo吗console.log(t.todo)
@JorgeZapatero谢谢你纠正我的错误。是,forEach返回“未定义”。我更新了我的答案只是为了把它记录到控制台上。