Javascript 如何更改阵列中的多个对象?

Javascript 如何更改阵列中的多个对象?,javascript,arrays,object,nested,Javascript,Arrays,Object,Nested,这是一个由两部分组成的问题,我似乎无法解决。第一部分要求以某种方式移除属于“Theo”的整个对象。第二部分需要通过编辑属于“Lorie”的一个属性值来更改对象。以下是阵列和说明: var employees = [{ "firstName": "Von", "lastName": "Budibent", "email": "vbudibent0@163.com", "department": "Sales" }, { "firstName": "Cathe

这是一个由两部分组成的问题,我似乎无法解决。第一部分要求以某种方式移除属于“Theo”的整个对象。第二部分需要通过编辑属于“Lorie”的一个属性值来更改对象。以下是阵列和说明:

var employees = [{
    "firstName": "Von",
    "lastName": "Budibent",
    "email": "vbudibent0@163.com",
    "department": "Sales"
}, {
    "firstName": "Catherina",
    "lastName": "Swalowe",
    "email": "cswalowe1@example.com",
    "department": "Engineering"
}, {
    "firstName": "Theo",
    "lastName": "Trill",
    "email": "ttrill2@sina.com.cn",
    "department": "Services"
}, {
    "firstName": "Elsy",
    "lastName": "McCrorie",
    "email": "emccrorie3@netscape.com",
    "department": "Legal"
}, {
    "firstName": "Lorie",
    "lastName": "Handsheart",
    "email": "lhandsheart4@fotki.com",
    "department": "Research and Development"
}]

/* Create a function called 'employeeUpdater'. employeeUpdater will loop 
over the array above and perform the following:
  1. If employee's first name is Theo, remove that employee because he just 
got fired.
  2. If the employee's first name is Lorie, change her department to 'HR'.
  3. Return the updated employee array. */
我只需要从以下几点开始:

var employeeUpdater = () => {
  for (let i = 0; i < employees.length; i++) {
    if (employees[i] = 'Theo') {
      employees.remove(employees[i]);
    } else if (employees[i] = 'Lorie') {
      employees.department = 'HR';
    }
  } return employees;
} 
var employeeUpdater=()=>{
for(设i=0;i

代码有问题

Javascript数组没有名为
remove
的方法,您需要使用该方法来删除项。但我可以提出这个解决方案

首先使用排除名为
Theo
的对象,然后使用或迭代数组,查找名为
Lorie
的对象,并更改其部门a

var员工=[{
“名字”:“冯”,
“姓氏”:“布迪本”,
“电子邮件”:vbudibent0@163.com",
“部门”:“销售”
}, {
“名字”:“Catherina”,
“姓氏”:“斯瓦洛”,
“电子邮件”:cswalowe1@example.com",
“部门”:“工程”
}, {
“名字”:“西奥”,
“姓氏”:“颤音”,
“电子邮件”:ttrill2@sina.com.cn",
“部门”:“服务”
}, {
“名字”:“埃尔西”,
“姓氏”:“McCrorie”,
“电子邮件”:emccrorie3@netscape.com",
“部门”:“法律”
}, {
“名字”:“Lorie”,
“lastName”:“Handsheart”,
“电子邮件”:lhandsheart4@fotki.com",
“部门”:“研究与开发”
}];
var editedEmployees=员工
.filter(emp=>emp.firstName!=='Theo')
.map(emp=>
({
“名字”:emp.firstName,
“姓氏”:emp.lastName,
“电子邮件”:emp.email,
“部门”:emp.firstName==‘Lorie’?‘HR’:emp.department
}));

log(editedEmployees)
Javascript数组没有名为
remove
的方法,您需要使用该方法来删除项。但我可以提出这个解决方案

首先使用排除名为
Theo
的对象,然后使用或迭代数组,查找名为
Lorie
的对象,并更改其部门a

var员工=[{
“名字”:“冯”,
“姓氏”:“布迪本”,
“电子邮件”:vbudibent0@163.com",
“部门”:“销售”
}, {
“名字”:“Catherina”,
“姓氏”:“斯瓦洛”,
“电子邮件”:cswalowe1@example.com",
“部门”:“工程”
}, {
“名字”:“西奥”,
“姓氏”:“颤音”,
“电子邮件”:ttrill2@sina.com.cn",
“部门”:“服务”
}, {
“名字”:“埃尔西”,
“姓氏”:“McCrorie”,
“电子邮件”:emccrorie3@netscape.com",
“部门”:“法律”
}, {
“名字”:“Lorie”,
“lastName”:“Handsheart”,
“电子邮件”:lhandsheart4@fotki.com",
“部门”:“研究与开发”
}];
var editedEmployees=员工
.filter(emp=>emp.firstName!=='Theo')
.map(emp=>
({
“名字”:emp.firstName,
“姓氏”:emp.lastName,
“电子邮件”:emp.email,
“部门”:emp.firstName==‘Lorie’?‘HR’:emp.department
}));
console.log(editedEmployees)
您可以使用splice()执行此操作:

var employeeUpdater=()=>{
for(设i=0;i
您可以使用splice()执行此操作:

var employeeUpdater=()=>{
for(设i=0;i
在数组中引用对象的一个棘手问题是,您需要记住,您必须使用数组索引号引用对象,然后使用对象名(如employees[2])。firstName将是引用O的方式。 此外,拼接方法最适合如上所述移除阵列

我相信您试图编写的代码如下所示:

var employeeUpdater = () => {
  for (let i = 0; i < employees.length; i++) {
    if (employees[i].firstName === 'Theo') {
      employees.splice(i, 1);
    } else if (employees[i].firstName === 'Lorie') {
      employees[i].department = 'HR';
    }
  } return employees;
} 
var _ = require('lodash');
/* Remove element */
_.remove(employees, function (employee) { return employee.firstName === 'Theo'; });
/* Get element to change */
var employee = _.find(employees,function (employee) { return employee.firstName === 'Lorie'; });
/* Change element */
employee.firstName = 'HR';
/* Right now employees store the right result */
var employeeUpdater=()=>{
for(设i=0;i
在数组中引用对象的一个棘手问题是,您需要记住,您必须使用数组索引号引用对象,然后使用对象名(如employees[2])。firstName将是引用O的方式。 此外,拼接方法最适合如上所述移除阵列

我相信您试图编写的代码如下所示:

var employeeUpdater = () => {
  for (let i = 0; i < employees.length; i++) {
    if (employees[i].firstName === 'Theo') {
      employees.splice(i, 1);
    } else if (employees[i].firstName === 'Lorie') {
      employees[i].department = 'HR';
    }
  } return employees;
} 
var _ = require('lodash');
/* Remove element */
_.remove(employees, function (employee) { return employee.firstName === 'Theo'; });
/* Get element to change */
var employee = _.find(employees,function (employee) { return employee.firstName === 'Lorie'; });
/* Change element */
employee.firstName = 'HR';
/* Right now employees store the right result */
var employeeUpdater=()=>{
for(设i=0;i
您应该学会以面向对象的方式编程。或许这将有助于:


/
您应该学会以面向对象的方式编程。或许这将有助于:

/
试试这个

var editedEmployees = employees
.filter(emp => emp.firstName !== 'Theo')
.map((emp) => {emp.department = emp.firstName === 'Lorie' ? 'HR' : 
emp.department; return emp;});
试试这个

var editedEmployees = employees
.filter(emp => emp.firstName !== 'Theo')
.map((emp) => {emp.department = emp.firstName === 'Lorie' ? 'HR' : 
emp.department; return emp;});
如果您喜欢使用,可以使代码更易于阅读

因此,您的脚本应该如下所示:

var employeeUpdater = () => {
  for (let i = 0; i < employees.length; i++) {
    if (employees[i].firstName === 'Theo') {
      employees.splice(i, 1);
    } else if (employees[i].firstName === 'Lorie') {
      employees[i].department = 'HR';
    }
  } return employees;
} 
var _ = require('lodash');
/* Remove element */
_.remove(employees, function (employee) { return employee.firstName === 'Theo'; });
/* Get element to change */
var employee = _.find(employees,function (employee) { return employee.firstName === 'Lorie'; });
/* Change element */
employee.firstName = 'HR';
/* Right now employees store the right result */
如果您喜欢使用,可以使代码更易于阅读

因此,您的脚本应该如下所示:

var employeeUpdater = () => {
  for (let i = 0; i < employees.length; i++) {
    if (employees[i].firstName === 'Theo') {
      employees.splice(i, 1);
    } else if (employees[i].firstName === 'Lorie') {
      employees[i].department = 'HR';
    }
  } return employees;
} 
var _ = require('lodash');
/* Remove element */
_.remove(employees, function (employee) { return employee.firstName === 'Theo'; });
/* Get element to change */
var employee = _.find(employees,function (employee) { return employee.firstName === 'Lorie'; });
/* Change element */
employee.firstName = 'HR';
/* Right now employees store the right result */

条件
员工[i]=“Theo”
。这将分配值,您需要
=
==
来比较值。
emp