码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript大数组如何根据对象的key快速找到并删除

时间:2018-03-20 15:21:41      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:[]   全局对象   testing   函数返回   范围   AC   result   turn   nbsp   

查找:上代码.

function isBigEnough(element) {
    return element >= 15;
}

var ret1 = [12, 5, 8, 130, 44].findIndex(isBigEnough);
console.log(ret1);
// index of 4th element in the Array is returned,
// so this will result in ‘3‘
var objArr = [{id:1, name:‘jiankian‘}, {id:23, name:‘anan‘}, {id:188, name:‘superme‘}, {id:233, name:‘jobs‘}, {id:288, name:‘bill‘, age:89}, {id:333}] ;
var ret2 = objArr.findIndex((v) => {
    return v.id == 233;
});
console.log(ret2);
// return 3

findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。

语法:

arr.findIndex(callback[, thisArg])

参数:

callback针对数组中的每个元素, 都会执行该回调函数, 执行时会自动传入下面三个参数:

element
当前元素。
index
当前元素的索引。
array
调用findIndex的数组。

thisArg可选。执行callback时作为this对象的值.

描述:

findIndex方法对数组中的每个数组索引0..length-1(包括)执行一次callback函数,直到找到一个callback函数返回真实值(强制为true)的值。如果找到这样的元素,findIndex会立即返回该元素的索引。如果回调从不返回真值,或者数组的length为0,则findIndex返回-1。 与某些其他数组方法(如Array#some)不同,在稀疏数组中,即使对于数组中不存在的条目的索引也会调用回调函数。

回调函数调用时有三个参数:元素的值,元素的索引,以及被遍历的数组。

如果一个 thisArg 参数被提供给 findIndex, 它将会被当作this使用在每次回调函数被调用的时候。如果没有被提供,将会使用undefined

findIndex不会修改所调用的数组。

在第一次调用callback函数时会确定元素的索引范围,因此在findIndex方法开始执行之后添加到数组的新元素将不会被callback函数访问到。如果数组中一个尚未被callback函数访问到的元素的值被callback函数所改变,那么当callback函数访问到它时,它的值是将是根据它在数组中的索引所访问到的当前值。被删除的元素仍然会被访问到。

示例

查找数组中首个质数元素的索引

以下示例查找数组中素数的元素的索引(如果不存在素数,则返回-1)。

function isPrime(element, index, array) {
  var start = 2;
  while (start <= Math.sqrt(element)) {
    if (element % start++ < 1) {
      return false;
    }
  }
  return element > 1;
}

console.log([4, 6, 8, 12].findIndex(isPrime)); // -1, not found
console.log([4, 6, 7, 12].findIndex(isPrime)); // 2

 

 


删除:上代码.

var myFish = [‘angel‘, ‘clown‘, ‘mandarin‘, ‘sturgeon‘];

myFish.splice(2, 0, ‘drum‘); // 在索引为2的位置插入‘drum‘
// myFish 变为 ["angel", "clown", "drum", "mandarin", "sturgeon"]

myFish.splice(2, 1); // 从索引为2的位置删除一项(也就是‘drum‘这一项)
// myFish 变为 ["angel", "clown", "mandarin", "sturgeon"]

语法

array.splice(start)

array.splice(start, deleteCount) 

array.splice(start, deleteCount, item1, item2, ...)

参数

start?
指定修改的开始位置(从0计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位(从-1计数);若只使用start参数而不使用deleteCount、item,如:array.splice(start) ,表示删除[start,end]的元素。
deleteCount 可选
整数,表示要移除的数组元素的个数。如果 deleteCount 是 0,则不移除元素。这种情况下,至少应添加一个新元素。如果 deleteCount 大于start 之后的元素的总数,则从 start 后面的元素都将被删除(含第 start 位)。
如果deleteCount被省略,则其相当于(arr.length - start)。
item1, item2, ... 可选
要添加进数组的元素,从start 位置开始。如果不指定,则 splice() 将只删除数组元素。

splice方法使用deleteCount参数来控制是删除还是添加:
start参数是必须的,表示开始的位置(从0计数),如:start=0从第一个开始;start>= array.length-1表示从最后一个开始。
①、从start位置开始删除[start,end]的元素。
array.splice(start)
②、从start位置开始删除[start,Count]的元素。
array.splice(start, deleteCount)    
③、从start位置开始添加item1, item2, ...元素。
array.splice(start, 0, item1, item2, ...)   

返回值

由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。

描述

如果添加进数组的元素个数不等于被删除的元素个数,数组的长度会发生相应的改变。

提示和注释

注释:请注意,splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。

示例

从第2位开始删除0个元素,插入“drum”

var myFish = ["angel", "clown", "mandarin", "surgeon"]; 
//从第 2 位开始删除 0 个元素,插入 "drum" 
var removed = myFish.splice(2, 0, "drum"); 
//运算后的 myFish:["angel", "clown", "drum", "mandarin", "surgeon"] 
//被删除元素数组:[],没有元素被删除

 

从第3位开始删除1个元素

var myFish = [‘angel‘, ‘clown‘, ‘drum‘, ‘mandarin‘, ‘sturgeon‘];
var removed = myFish.splice(3, 1);
//运算后的myFish:["angel", "clown", "drum", "sturgeon"]
//被删除元素数组:["mandarin"]

 

从第2位开始删除1个元素,然后插入“trumpet”

var myFish = [‘angel‘, ‘clown‘, ‘drum‘, ‘sturgeon‘];
var removed = myFish.splice(2, 1, "trumpet"); 
//运算后的myFish: ["angel", "clown", "trumpet", "surgeon"] 
//被删除元素数组:["drum"]

 

从第0位开始删除2个元素,然后插入"parrot","anemone"和"blue"

var myFish = [‘angel‘, ‘clown‘, ‘trumpet‘, ‘sturgeon‘];
var removed = myFish.splice(0, 2, ‘parrot‘, ‘anemone‘, ‘blue‘);
// 运算后的myFish: ["parrot", "anemone", "blue", "trumpet", "sturgeon"] 
// 被删除元素数组:["angel", "clown"]

 

从第2位开始删除2个元素

var myFish = [‘parrot‘, ‘anemone‘, ‘blue‘, ‘trumpet‘, ‘sturgeon‘];
var removed = myFish.splice(myFish.length - 3, 2);
// 运算后的myFish: ["parrot", "anemone", "sturgeon"] 
// 被删除元素数组:["blue", "trumpet"]

 

从第2位开始删除所有元素

var myFish = [‘angel‘, ‘clown‘, ‘mandarin‘, ‘sturgeon‘];
var removed = myFish.splice(2);
// 运算后的myFish :["angel", "clown"] 
// 被删除的元素数组: ["mandarin", "sturgeon"]
 

 

JavaScript大数组如何根据对象的key快速找到并删除

标签:[]   全局对象   testing   函数返回   范围   AC   result   turn   nbsp   

原文地址:https://www.cnblogs.com/mophy/p/8608834.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!