【问题标题】:I need to remove a specific object from inside of an array in JavaScript [duplicate]我需要从 JavaScript 中的数组内部删除特定对象 [重复]
【发布时间】:2014-08-26 06:40:45
【问题描述】:

这是我第一次问问题,所以请放轻松。 我目前在课堂上学习 JavaScript,到目前为止我很喜欢它。但是,我对我们的一项任务有疑问。

我有一个数组,里面有 4 个对象。我目前的目标是从数组中删除特定对象。它还没有结束,所以我假设我需要使用 for 循环来执行此操作,但语法有问题。 我目前的代码如下:

var devMountainEmployees = [];

var tyler = {
    name: 'Tyler', 
    position: 'Lead Instructor/Engineer', 
    spiritAnimal: 'Honey Badger'    
};

var cahlan = {
    name: 'Cahlan', 
    position: 'CEO', 
    spiritAnimal: 'butterfly'    
};

var ryan = {
    name: 'Ryan', 
    position: 'Marketing', 
    spiritAnimal: 'fox'    
};

var colt = {
    name: 'Colt',
    position: 'Everything really',
    spiritAnimal: 'Young Male Horse'
}

devMountainEmployees.push(tyler, cahlan, ryan, colt);
console.log(devMountainEmployees.length);

我要删除的是 cahlan,我需要使用循环。
谢谢你们的帮助。

【问题讨论】:

  • 那么你卡在哪里了?如果这是你的任务,你为什么要让别人为你做呢?
  • 如果我要求直接为我完成任务,我深表歉意。那不是我的意图。我可以使用 splice 很好地解决它,但我想知道我是否可以通过循环来解决它。我正在查看您发布的其他问题,我认为它可能对我有帮助
  • 没什么大不了的,只是如果你有一个任务要作为一个循环来完成,那么最好展示你尝试过的内容以及你遇到的问题。祝你好运。

标签: javascript arrays


【解决方案1】:

您不需要循环来从数组中删除已知对象,您可以使用indexOf 找到偏移量并使用splice 将其删除。

devMountainEmployees.splice(devMountainEmployees.indexOf(cahlan), 1);

更新:

由于您需要使用循环,请执行以下操作:

for(var i = 0; i < devMountainEmployees.length; i++)
{
    if(devMountainEmployees[i] === cahlan)
    {
        devMountainEmployees.splice(i, 1);
        break;
    }
}

【讨论】:

  • 循环遍历您的 devMountainEmployees,直到找到 cahlan,然后将他从数组中删除。这是给我的指示。感谢您的帮助
  • @user3806863:除了对这个要求的意见外,我还添加了一个替代方法,使用 for 循环来查找索引。
【解决方案2】:

如果您知道要删除的对象的索引,则可以使用splice

devMountainEmployees.splice(1, 1)(第一个是索引,第二个是要移除的数字)

【讨论】:

  • 虽然这很有效,但我认为这样做的重点是我需要使用循环来完成它。
  • 这太荒谬了。为什么你的计算机课会这样重新发明轮子?
  • 我认为重点是让我们练习循环。这显然是我需要的,因为我遇到了问题。
  • @Strikeskids - 我认为关键是要编写事先不知道索引的代码。所以 OP 仍然需要 .splice() 但必须首先搜索 cahlan 元素以获取其索引。 (我会使用 .indexOf() 而不是循环。)
猜你喜欢
  • 2019-10-26
  • 2019-12-03
  • 1970-01-01
  • 2014-06-25
  • 1970-01-01
  • 2018-06-19
  • 2020-10-25
  • 2011-11-09
  • 2018-01-08
相关资源
最近更新 更多