Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查数组中的对象在参数ID中是否存在ID属性?_Javascript_Arrays - Fatal编程技术网

Javascript 如何检查数组中的对象在参数ID中是否存在ID属性?

Javascript 如何检查数组中的对象在参数ID中是否存在ID属性?,javascript,arrays,Javascript,Arrays,我需要如何执行此操作的帮助,我有todos,如果参数中有todos isComplete属性的ID,我想更新数组中的todos isComplete属性,类似以下代码: const todos = [{id: 1, text:"one",isComplete:false},{id:2,text:"two",isComplete:false},{id:3,text:"three",isComplete:false}]; const myArgs = [2,3]; const completeAl

我需要如何执行此操作的帮助,我有todos,如果参数中有todos isComplete属性的ID,我想更新数组中的todos isComplete属性,类似以下代码:

const todos = [{id: 1, text:"one",isComplete:false},{id:2,text:"two",isComplete:false},{id:3,text:"three",isComplete:false}];

const myArgs = [2,3];
const completeAllTodos = todos.filter(todoItem.id =>  myArgs.includes(todoItem.id)); 
completeAllTodos.map( todoItem => todoItem.isComplete = true);

在completeAllTodos上,我希望返回参数数组中存在ID的todos对象,然后将completeAllTodos isComplete属性更新为true。我也希望异步执行,但我是javascript新手。我已经想了好几个小时了,但是我不能让我的大脑做我想做的事情。帮助?

如果您只想将isCompletes设置为true:

const todos = [{id: 1, text:"one",isComplete:false},{id:2,text:"two",isComplete:false},{id:3,text:"three",isComplete:false}];
myArgs = [2,3];
todos.forEach(el=>myArgs.indexOf(el.id)+1?el.isComplete=true:0);
如果你也想要这个元素:

const todos = [{id: 1, text:"one",isComplete:false},{id:2,text:"two",isComplete:false},{id:3,text:"three",isComplete:false}];
myArgs = [2,3];
var result=todos.filter(el=>myArgs.indexOf(el.id)+1).map(el=>!(el.isComplete=true)||el);
如果你两者都想要:

const todos = [{id: 1, text:"one",isComplete:false},{id:2,text:"two",isComplete:false},{id:3,text:"three",isComplete:false}];
myArgs = [2,3];
var results=todos.reduce((arr,el)=>myArgs.indexOf(el.id)+1?(el.isComplete=true,arr.push(el),arr):arr);

如果您确实需要异步实现(我不这么认为):


如果您只想将isCompletes设置为true:

const todos = [{id: 1, text:"one",isComplete:false},{id:2,text:"two",isComplete:false},{id:3,text:"three",isComplete:false}];
myArgs = [2,3];
todos.forEach(el=>myArgs.indexOf(el.id)+1?el.isComplete=true:0);
如果你也想要这个元素:

const todos = [{id: 1, text:"one",isComplete:false},{id:2,text:"two",isComplete:false},{id:3,text:"three",isComplete:false}];
myArgs = [2,3];
var result=todos.filter(el=>myArgs.indexOf(el.id)+1).map(el=>!(el.isComplete=true)||el);
如果你两者都想要:

const todos = [{id: 1, text:"one",isComplete:false},{id:2,text:"two",isComplete:false},{id:3,text:"three",isComplete:false}];
myArgs = [2,3];
var results=todos.reduce((arr,el)=>myArgs.indexOf(el.id)+1?(el.isComplete=true,arr.push(el),arr):arr);

如果您确实需要异步实现(我不这么认为):

这里有一条路

const todos = [{
  id: 1,
  text: "one",
  isComplete: false
}, {
  id: 2,
  text: "two",
  isComplete: false
}, {
  id: 3,
  text: "three",
  isComplete: false
}];

const myArgs = [2, 3];
const completeAllTodos = todos
  .filter(todo => {
    return myArgs.includes(todo.id)
  })
  .map(todo => {
    todo.isComplete = true
    return todo
  });
console.log(completeAllTodos)
这里有一条路

const todos = [{
  id: 1,
  text: "one",
  isComplete: false
}, {
  id: 2,
  text: "two",
  isComplete: false
}, {
  id: 3,
  text: "three",
  isComplete: false
}];

const myArgs = [2, 3];
const completeAllTodos = todos
  .filter(todo => {
    return myArgs.includes(todo.id)
  })
  .map(todo => {
    todo.isComplete = true
    return todo
  });
console.log(completeAllTodos)

只需在过滤器循环块中执行所有操作:

const todos=[{
id:1,
正文:“一”,
isComplete:错误
}, {
id:2,
文本:“两个”,
isComplete:错误
}, {
id:3,
正文:“三”,
isComplete:错误
}];
常量args=[2,3];
const completedTodos=todos.filter(item=>args.includes(item.id)和&(item.isComplete=true));

console.log(completedTodos)只需在过滤器循环块中执行所有操作:

const todos=[{
id:1,
正文:“一”,
isComplete:错误
}, {
id:2,
文本:“两个”,
isComplete:错误
}, {
id:3,
正文:“三”,
isComplete:错误
}];
常量args=[2,3];
const completedTodos=todos.filter(item=>args.includes(item.id)和&(item.isComplete=true));

console.log(completedTodos)对于函数参数,
todoItem.id
不是有效名称筛选器中的:
todoItem.id
对于函数参数不是有效名称我尝试了[…todos,…completeAllTodos],但我想用2和3 id重写todos,帮助?我尝试了[…todos,…completeAllTodos]但我想用2号和3号id覆盖TODO,帮帮忙?