如何从数组中删除一个特定值? 类似 :
array.remove(value);
我必须使用核心核心核心JavaScript。 不允许框架 。
如何从数组中删除一个特定值? 类似 :
array.remove(value);
我必须使用核心核心核心JavaScript。 不允许框架 。
当前回答
对我而言,越简单越好,2018年(2019年左右),我给你这个(近一点)单行话,回答最初的问题:
Array.prototype.remove = function (value) {
return this.filter(f => f != value)
}
有用的是,你可以用在咖喱的表达方式上,比如:
[1,2,3].remove(2).sort()
其他回答
减少方法的利润如下:
(a) 需要按索引删除某一要素:
function remove(arr, index) {
return arr.reduce((prev, x, i) => prev.concat(i !== index ? [x] : []), []);
}
b) 需要删除元素值(int)的元素:
function remove(arr, value) {
return arr.reduce((prev, x, i) => prev.concat(x !== value ? [x] : []), []);
}
这样我们就可以返回一个新的阵列( 将会以酷酷的功能方式- 比使用推或组合要好得多) , 并删除元素 。
您永远不应该根据功能性编程模式改变您的阵列。 您可以创建一个新的阵列, 而不引用您想要更改的数据 ECMAScript 6 方法 。filter
;
var myArray = [1, 2, 3, 4, 5, 6];
假设您想要删除5
从数组中,您可以简单地这样做:
myArray = myArray.filter(value => value !== 5);
这将给您一个没有您想要删除的值的新数组。 因此结果将是 :
[1, 2, 3, 4, 6]; // 5 has been removed from this array
关于进一步理解,请阅读MDN文件:Array.过滤器.
Array.prototype.removeByValue = function (val) {
for (var i = 0; i < this.length; i++) {
if (this[i] === val) {
this.splice(i, 1);
i--;
}
}
return this;
}
var fruits = ['apple', 'banana', 'carrot', 'orange'];
fruits.removeByValue('banana');
console.log(fruits);
// -> ['apple', 'carrot', 'orange']
通常比较好的是 创造一个新的阵列filter
函数。
let array = [1,2,3,4];
array = array.filter(i => i !== 4); // [1,2,3]
这还提高了易读性IMHO。slice
虽然它知道有时你应该去。
使用过滤过滤器这是达到这一要求的优雅方式。filter
将不改变原始数组。
const num = 3;
let arr = [1, 2, 3, 4];
const arr2 = arr.filter(x => x !== num);
console.log(arr); // [1, 2, 3, 4]
console.log(arr2); // [1, 2, 4]
您可以使用filter
然后将结果指定为原始数组,如果你想实现突变清除行为的话。
const num = 3;
let arr = [1, 2, 3, 4];
arr = arr.filter(x => x !== num);
console.log(arr); // [1, 2, 4]
顺便说一句,filter
将删除在条件中匹配的所有事件( 不只是第一次发生) , 正如您在下面的示例中看到的一样
const num = 3;
let arr = [1, 2, 3, 3, 3, 4];
arr = arr.filter(x => x !== num);
console.log(arr); // [1, 2, 4]
万一您只想删除第一种情况,您可以使用复盘方法
const num = 3;
let arr = [1, 2, 3, 3, 3, 4];
const idx = arr.indexOf(num);
arr.splice(idx, idx !== -1 ? 1 : 0);
console.log(arr); // [1, 2, 3, 3, 4]