Javascript 如何在JS中迭代数组?

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

我正在尝试编写一个函数,在其中迭代todos数组。如果todos有一个值,则返回该值,否则返回一个字符串,表示“还没有要做的事!”。但我不确定我是否正确编写了该函数,或者我将如何调用该函数

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 dos
forEach
仅在项目位于数组中时迭代。但是您想要返回什么?如果只有
{todo:“mything”,done:true}
或者它是
{todo:,done:false}
您想要返回值还是打印值呢?我这样问是因为您不能在forEach回调中返回值,但可以打印每个值
t.todo
返回t.todo
没有意义。forEach的回调应该总是返回未定义的ie nothing@sahussai您想打印t.todo吗
console.log(t.todo)
@JorgeZapatero谢谢你纠正我的错误。是,forEach返回“未定义”。我更新了我的答案只是为了把它记录到控制台上。