如何在javascript中删除数组中的对象

如何在javascript中删除数组中的对象,javascript,arrays,splice,Javascript,Arrays,Splice,这是我的数组和一组对象。我想根据ID获取用户输入并从阵列中删除。我曾尝试使用splice,但不断出现错误 [ Employee { empId: 1000, empName: 'John', empSalary: 9123, }, Employee { empId: 1001, empName: 'Doe', empSalary: 10000, }, Employee { empId: 1002, empName

这是我的数组和一组对象。我想根据ID获取用户输入并从阵列中删除。我曾尝试使用splice,但不断出现错误

[
  Employee {
    empId: 1000,
    empName: 'John',
    empSalary: 9123,
  },
  Employee {
    empId: 1001,
    empName: 'Doe',
    empSalary: 10000,
  },
  Employee {
    empId: 1002,
    empName: 'Jason',
    empSalary: 9812,
  },
  Employee {
    empId: 1003,
    empName: 'Jamie',
    empSalary: 6661,
  }
]
var target=prompt(“输入要删除的id:”);
对于(变量i=0;i

如果有人能帮我,请帮我

找不到任何错误,但您必须将提示结果转换为数字,因为返回的数据是字符串类型

let数据=[{
empId:1000,
empName:'约翰',
年薪:9123,
},
{
empId:1001,
empName:'Doe',
年薪:10000,
},
{
empId:1002,
empName:'Jason',
年薪:9812,
},
{
empId:1003,
empName:'杰米',
年薪:6661,
}
]
var target=prompt(“输入要删除的id:”);
对于(变量i=0;iconsole.log(data)
可能变量target是typeString,但empId是typeNumber。所以“1”不等于1。 我认为你应该替换这一行:

var target = prompt("Enter id to delete:");
for(var i = 0; i < data.length; i++) {
    if(data[i].empId === target) {
        data.splice(i, 1);
        break;
    }
}
使用以下行:

if(data[i].empId === target) {

数组中的id值是整数。在提示处添加的信息是字符串。你所要做的就是

const data=[{“empId”:1000,“empName”:“John”,“empSalary”:9123},{“empId”:1001,“empName”:“Doe”,“empSalary”:10000},{“empId”:1002,“empName”:“Jason”,“empSalary”:9812},{“empId”:1003,“empName”:“Jamie”,“empSalary”:6661};
var target=+提示符(“输入要删除的id:”);
// ----------^
for(设i=0;i控制台日志(数据)对正在遍历的数组进行变异从来都不是一个好主意。使用较新的标准(如filter)来拥有不同的阵列,并保持原始阵列不变

此外,您可能会遇到数据类型问题。“==”进行严格的类型检查。您可以使用“==”或将目标解析为数字

if(data[i].empId === +target) {

newData现在已删除带有目标id的员工的数组。

由于您是迭代而不是拼接,您可以跳过要删除的id将项目推送到新对象中。。因此,新对象将包含除要删除的项之外的元素谢谢!!它起作用了。我觉得很愚蠢,这是一个很小的错误,但是的,这是有效的。过滤也是一种更好的方法!祝你足球好运。
let newData = data.filter((employee) => {
return (employee.empId != target)
});