如何从数组中删除特定值?就像是:
array.remove(value); // removes all elements with value
我必须使用 原生 JavaScript。不允许使用框架。
原文由 Walker 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何从数组中删除特定值?就像是:
array.remove(value); // removes all elements with value
我必须使用 原生 JavaScript。不允许使用框架。
原文由 Walker 发布,翻译遵循 CC BY-SA 4.0 许可协议
2016年10月编辑
在此代码示例中,我使用 array.filter(...)
函数从数组中删除不需要的项。此函数不会更改原始数组并创建一个新数组。如果您的浏览器不支持此功能(例如版本 9 之前的 Internet Explorer,或版本 1.5 之前的 Firefox),请考虑 使用 core-js
进行填充。
var value = 3
var arr = [1, 2, 3, 4, 5, 3]
arr = arr.filter(function(item) {
return item !== value
})
console.log(arr)
// [ 1, 2, 4, 5 ]
let value = 3
let arr = [1, 2, 3, 4, 5, 3]
arr = arr.filter(item => item !== value)
console.log(arr)
// [ 1, 2, 4, 5 ]
重要 ECMAScript 6 () => {}
Internet Explorer、45 版之前的 Chrome、22 版之前的 Firefox 和 10 版之前的 Safari 完全不支持箭头函数语法。要在旧浏览器中使用 ECMAScript 6 语法,您可以使用 BabelJS .
此方法的另一个优点是您可以删除多个项目
let forDeletion = [2, 3, 5]
let arr = [1, 2, 3, 4, 5, 3]
arr = arr.filter(item => !forDeletion.includes(item))
// !!! Read below about array.includes(...) support !!!
console.log(arr)
// [ 1, 4 ]
重要 array.includes(...)
Internet Explorer、版本 47 之前的 Chrome、版本 43 之前的 Firefox、版本 9 之前的 Safari 和版本 14 之前的 Edge 完全不支持该功能,但您可以 使用 core-js
.
如果 “This-Binding Syntax” 提案被接受,您将能够这样做:
// array-lib.js
export function remove(...forDeletion) {
return this.filter(item => !forDeletion.includes(item))
}
// main.js
import { remove } from './array-lib.js'
let arr = [1, 2, 3, 4, 5, 3]
// :: This-Binding Syntax Proposal
// using "remove" function as "virtual method"
// without extending Array.prototype
arr = arr::remove(2, 3, 5)
console.log(arr)
// [ 1, 4 ]
参考
原文由 ujeenator 发布,翻译遵循 CC BY-SA 4.0 许可协议
27 回答12.8k 阅读
8 回答3.4k 阅读✓ 已解决
6 回答1.1k 阅读✓ 已解决
5 回答5.2k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
3 回答1.7k 阅读
4 回答2.3k 阅读✓ 已解决
使用
index
找到要删除的数组元素的indexOf
,然后使用splice
删除该索引。splice
的第二个参数是要移除的元素个数。请注意,splice
修改数组并返回一个包含已删除元素的新数组。为了完整起见,这里是函数。第一个函数只删除一个匹配项(即从
[2,5,9,1,5,8,5]
删除5
的第一个匹配项),而第二个函数删除所有匹配项:在 TypeScript 中,这些函数可以通过类型参数保持类型安全: