使用值而不是索引删除数组

时间:2017-05-01 01:36:03

标签: javascript lodash

我必须检查B是在哪个索引中?我怎么能摆脱B?说我有一个函数可以接收一个可能是A,B,C的参数

let grade = ['A','B','C']
delete grade['B']; // this won't work? 
console.log(grade) 

1 个答案:

答案 0 :(得分:1)

如果您真的致力于在数组上使用delete运算符,那么就可以这样:

let grade = ['A', 'B', 'C'];
delete grade[grade.indexOf('B')];

但请注意,这并不能完成您可能想要做的事情。更清楚的是,我假设您希望上面的操作返回['A', 'C']。它实际上没有。相反,您在索引1处获得undefined(之前存在值B)。

console.log(grade);
['A', undefined x 1, 'C']

从阵列中正确替换B的最合适的操作是使用Array#splice。例如:

let grade = ['A', 'B', 'C'];
grade.splice(grade.indexOf('B'), 1);

console.log(grade);
['A', 'C']