JavaScript从数组中删除特定数据的方法总结
前言
增删改查是我们日常开发中的最基本任务,在JavaScript中我们经常需要从数据组删除特定的数据项。然而,JavaScript数组中并没有提供删除特定数据项的方法。所以我们必须使用替代的方法,来从javaScript中删除特定数据项。
如何在Javascript中删除特定的数组项
1:使用 filter()
使用现代 Javascript 删除特定数组项的最简单方法是使用过滤器。让我们看一个简单的例子:
let myArr = [ "?", "?", "?", "?" ];
let removedArr = myArr.filter((x) => x !== "?");
console.log(removedArr);
当我们的数组中的每一个数据想都是唯一的时候,他是正常工作的,但是当我们的存在重复项的时候,此时如果你只想删除一个,保留其他重复的,这种方式是无法做到的。
let myArr = [ "?", "?", "?", "?" ];
let removedArr = myArr.filter((x) => x !== "?");
console.log(removedArr);
由于我们有两个青苹果,并且新数组过滤掉了所有青苹果,因此我们在使用此方法时实际上删除了两个项目。如果我们只想删除一个元素,我们必须使用另一种方法。
2:使用 indexOf() 和 splice()
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果没有找到匹配的字符串则返回 -1。 splice() 方法用于添加或删除数组中的元素。注意:这种方法会改变原始数组。 这种方式与上面的区别在于:
- 首先,它改变了原始数组——所以我们不在这里复制。原始数组将被改变。
- 其次,它使用两个函数——首先我们获取indexOf要删除的数组项,然后我们splice获取数组以删除单个项。
这是一个例子:
let myArr = [ "?", "?", "?", "?" ];
let getLocation = myArr.indexOf("?");
myArr.splice(getLocation, 1);
// myArr now becomes [ "?", "?", "?" ];
console.log(myArr);
附:js delete方法删除指定位置的数组元素
delete方法可以通过数组的下标将js数组中的一个元素从指定位置上删除,且删除掉数组中的元素后,会把该下标出的值置为undefined,数组的长度不会变。
语法:
delete.数组[数组下标];
代码实例:删除animal数组的第二项元素,即:animal[1],然后animal[1]的值会为:undefined。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<div class="demo">
<p>数组:cat,elephant,tiger,rabbit;<br>数组长度为:4</p>
<button onclick="myFunction()">点我--delete删除元素</button>
</div>
</body>
<script type="text/javascript">
function myFunction(){
var animal = ["cat", "elephant", "tiger","rabbit"];
document.write("<p>数组:"+animal+"<br>数组长度:"+ animal.length+"</p>");
var animal1= delete animal[1];
document.write("<p>新数组:"+animal+"<br>删除元素后,现在为:"+ animal[1]+"<br>数组长度:"+ animal.length+"</p>");
}
</script>
</html>
总结
尽管在 Javascript 中没有直接从数组中删除项目的方法,但我们确实有两个工具可以为我们提供足够的灵活性来涵盖几乎所有有关删除数组项目的场景。
到此这篇关于JavaScript从数组中删除特定数据的文章就介绍到这了,更多相关js数组删除特定数据内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341