1. 程式人生 > >移除陣列 arr 中的所有值與 item 相等的元素。不要直接修改陣列 arr,結果返回新的陣列

移除陣列 arr 中的所有值與 item 相等的元素。不要直接修改陣列 arr,結果返回新的陣列

不學習總是有危機感....

方法1 :

splice方法 : 從陣列中移除一個或多個元素,如果必要,在所移除的位置上插入新元素,返回所以出的元素.

arrayObj.splice(start,deleteCount,[item1,item2]);

arrayObj : 必選項.一個Array物件.

start 必選項.指定從陣列中移除元素的開始位置,這個位置從0開始計算的.

deleteCount: 必選項.要移除的元素的個數.

item1,item2: 可選項.要在所以出元素的位置上插入的新元素

說明: splice方法可以移除從start位置開始的指定個數的元素並插入新元素,從而修改arrayObj,返回值是一個由所移除的元素組成的新的Array物件.

//普通迴圈

function remove(arr, item) {
    var a = arr.slice(0); //擷取0到arr.length之間的長度
for(var i =0 ;i < a.length; i++)
  { 
    if(a[i]===item){ 
    a.splice(i,1); 
        i--; //很關鍵,因為上一步陣列中移除了元素,陣列長度改變了
     } 
}
 return a; 
 }

方法二:

push 方法

  將新元素新增到一個數組中,並返回陣列的新長度值.

語法: arrayObj.push([item[item2[...[itemN]]]])

引數:

arrayObj: 一個Array物件

item,item2,.....,itemN

可選項.該Array的新元素.

說明: 方法將以新元素出現的順序新增這些元素.如果引數之一為陣列,那麼該陣列將作為單個元素新增到陣列中.如果要合併兩個或多個數組中的元素,那應該使用concat方法.

如下:

 forEach: 用於呼叫陣列的每個元素,並將元素傳遞給回撥函式

注意: forEach()對於空陣列是不會執行回撥函式的

語法: array.forEach(function(currentValue,index,arr),thisValue)

function(currentValue,index,arr)

currentValue:必須,當前元素

index:可選 當前元素的索引值

arr:可選,當前元素所屬的陣列物件

thisValue:可選,傳遞給函式的值一般用"this"值.如果這個引數為空,"undefined"回傳遞給"this"值

function remove(arr, item) {
var arrR=[];
arr.forEach(function(e){
if(e!==item){
arrR.push(e);
}
})
return arrR
}

方法三:

filter()方法建立一個新的陣列,新陣列中的元素是通過檢查指定陣列中符合條件的所有元素,但是filter不會對空陣列進行檢測,也不會改變原始陣列.

currentValue:必須,當前元素

index:可選 當前元素的索引值

arr:可選,當前元素所屬的陣列物件

thisValue:可選,傳遞給函式的值一般用"this"值.如果這個引數為空,"undefined"回傳遞給"this"值

返回值:返回陣列,包含了符合條件的所有元素,如果沒有符合條件的則返回空元素

語法: array.filter(function(courrentValue,index,arr),thisValue)

//filter
function remove(arr,item){
return arr.filter(function(ele){
return ele != item;
})
}

相關推薦

陣列 arr 所有 item 相等元素不要直接修改陣列 arr結果返回陣列

不學習總是有危機感.... 方法1 : splice方法 : 從陣列中移除一個或多個元素,如果必要,在所移除的位置上插入新元素,返回所以出的元素. arrayObj.splice(start,deleteCount,[item1,item2]); arrayObj :

【JavaScript】牛客程式設計:在陣列 arr 查詢 item 相等元素出現的所有位置

function findAllOccurrences(arr, target) { var a = [] arr.forEach(function(item, index) {

已知長度為n的線性表A採用順序儲存結構請寫一個時間複雜度為O(n)、空間複雜度為O(1)的演算法該演算法可刪除線性表所有item的資料元素

語言:C++ #include <iostream> using namespace std; typedef int ElemType; //定義 #define MAXSIZE 100 typedef struct {ElemType *elem; int length;}Sq

長度為n的順序表L編寫一個時間複雜度為O(n),空間複雜度為O(1)的演算法該演算法刪除線性表所有為X的元素

解法:用K記錄順序表L中不等於X的元素個數,邊掃描L邊統計K,並將不等於X的元素向前放置K位置上,最後修改L長度 void  del_x_1(SqList &L,Elemtype x){ int k=0; for(i=0;i<L.length;i++) {

刪除線性表所有為x的元素要求時間複雜度為O(n)空間複雜度為O(1)

思路:統計不等於x的個數,用k記錄不等於x的元素的個數。邊統計邊把當前元素放在第k個位置上,最後修改表的長度 public static void del(List<Integer> l

5.刪除數組arr的最後一個元素不改變原數組結果返回數組

cnblogs bsp pan arr ast 刪除 let del pop 方法一:slice()方法; var a=[1,5,‘ff‘,‘g‘,‘h‘,‘sd‘,‘g‘]; alert( deletelast(a)); function

演算法:給定整數型陣列要求去除重複元素形成陣列返回陣列長度

/** * * @author VK * @Date 2016-12-19 10:48 * @Decribe 題目:給定一個整數型一維陣列,去除重複元素形成新陣列, * 並返回新陣列長度。不額外分配陣列空間 * */ public class

陣列的最大第一個元素交換最小最後一個元素進行交換

**課堂案例: 將陣列中的最大值與第一個元素交換,將陣列中的最小值與最後一個元素進行交換** public class MaxAndMin{ public static void main(String[] args){ int

83. Remove Duplicates from Sorted List (連結串列相等的節點)

Given a sorted linked list, delete all duplicates such that each element appear only once. For exa

深入理解PHP引用

str ring int 之前 不同 重新 small nts 計數 【原文】 先看下面的問題: 1 2 3 4 5 6 7 8 <?php $a = 10;//將常量值賦給變量,會為a分配內存空間 $b = $a;//變量賦值給變量,是不是

import os 路徑和路徑下面的所有文檔

nbsp OS txt list sys pytho os.chdir remove 移除 python3.5用法: import osimport syspath = os.chdir("G:/python/arc/")files = os.listdir(path)

怎麼一個字串的前導空格

字串中的前導空格就是出現在字串中第一個非空格字元前的空格,我們使用方法lstrip()可以將它從字串中移除 a=' Ayushi '.lstrip() print(a)#Ayushi  可以看到,該字串既有前導字元,也有後綴字元,呼叫lstrip()去除了前導空格,如果我們想去除

【Python面試必看系列】之怎麼一個字串的前導空格?

Q 20. 怎麼移除一個字串中的前導空格? 字串中的前導空格就是出現在字串中第一個非空格字元前的空格。我們使用方法 Istrip() 可以將它從字串中移除。 >>> ' Ayushi '.lstrip() 結果: ‘Ayushi ‘ 可以看到

資料結構--C語言--已知線性表的元素以遞增有序排列並以單鏈表作儲存結構試寫一高效演算法刪除表所有大於mink且小於maxk的元素

#include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define LEN sizeof(struct LNode) struct LNode{ int data;//資料域 struct

從順序表L刪除所有為x的元素

#include <stdio.h> #define MAXSIZE 100 typedef struct { int elem[MAXSIZE]; int last; }SeqList; int creat(SeqList &L) { int a; printf("請輸入要建立

設計一個遞迴演算法刪除不帶頭節點單鏈表L所有為x的節點

#include "stdafx.h" #include<stdio.h> #include<malloc.h> #include<stdlib.h> typed

php傳引用的有什麼區別

php傳值:在函式範圍內,改變變數值得大小,都不不會影響到函式外邊的變數值。 PHP按引用:在函式範圍內,對值的任何改變,在函式外部也有所體現,因為傳引用傳的是記憶體地址。 <?php //傳值 $a = 1; $b = 2; $b = $a; $a = 3; echo $b.

java傳地址

相信學習過c的朋友們,對於傳值與傳地址比較熟悉,而在java中這樣的術語用的比較少,那麼到底存不存在傳值與傳地址呢? 答案肯定是:存在的!! 做下列總結: 說明:Student student=new Student();中student就可以看作是c裡面的指標