『壹』 js中怎樣實現數組過濾函數filter
filter 是根據返回的值是否為真來判斷是否保留元素,所以可以這樣實現
Array.prototype.filter=Array.prototype.filter||function(func){
vararr=this;
varr=[];
for(vari=0;i<arr.length;i++){
if(func(arr[i])){
r.push(arr[i]);
}
}
returnr;
}
因為目前大部分瀏覽器有 filter 實現,所以測試時只能改個名字叫 filterx,下面是測試代碼
vardata=[1,2,3,4,5,6,7];
Array.prototype.filterx=Array.prototype.filterx||function(func){
vararr=this;
varr=[];
for(vari=0;i<arr.length;i++){
if(func(arr[i])){
r.push(arr[i]);
}
}
returnr;
}
console.log(data.filter(function(t){
returnt%3>0;
}));
console.log(data.filterx(function(t){
returnt%3>0;
}));
『貳』 js中filter過濾用法總結
filter() 方法創建一個新的數組,新數組中的元素是通過檢查指定數組中符合條件的所有元素。
注意: filter() 不會對空數組進行檢納賣測。
注意: filter() 不會改變原始數組。
| 參數 | 描述 |
| function(currentValue, index,arr) | 必須。函數,數組中的每個元素都會執行這個函數
函數參數:
| 參數 | 描述 |
| currentValue | 必須。當前元素的值 |
| index | 可選。當期元素的索引值 |
| arr | 可選。當期元素屬於的數組對象 |
|
| thisValue | 可選。對象作為該執行回調時使用,傳遞給函數,用作 "this" 的值。
如果省略了 thisValue ,"this" 的值為 "undefined" |
首先回顧一下filter的作用:過濾數組中符合條件的元素
另外也可以用來過濾對象數組中老衡符合條件的對象,eg:
|
目前比較常用的方法是使用ES6的set完成,eg:
結合map使用可以先過濾出符合條件的對象然後去除某些不需洞含逗要的欄位,比如:
簡單講filter就是一個數組過濾器,參數接收一個函數,數組的每一項經過函數過濾,返回一個符合過濾條件的新數組
函數接收三個參數:
『叄』 javascript 數組循環過濾問題
01,05,09,13,35
『肆』 js數組對象操作
聲明創建一個數組對象: var arr = new Array(); 或者 var arr = [];
連接兩個或者多個數組,並且返回該數組,語法: array.concat(object,object,......);
通過指定字元(參數)對數據進行分割,返回字元串,參數省略的話則用默認用逗號為分隔符
刪除數組的最後一個對象,返回該刪除元素的值
向數組末尾添加一個或者多個對象,語法: array.push(newObject1,newObject2,.....);
刪除數組的第一個對象,並返回刪除的元素
向數組開頭添加一個或者多個元素,並銷圓返回新的長度
從已知數組中返回指定選中的數據(不包括end 對應的元素),如果省略 end 將復制 start 之後的所有元素,該操作不會修改原數組的數據, slice(start,end);
向數組中刪除/添加對象,並返回被刪除的元素
splice(index,count,item1,item2,......);
方法用戶對數組的排序, sort(sortby) ,sortby可選,必須是函數。如調用方法沒有使用參數,則按字母順序進行排序。
只要有一個滿足的就返回true,沒有滿足的返回false
驗證數組中是否每個元素都滿足指定的條件
沒有返回值,可以不知道數組長度
arr.forEach(function(res,index){ })
返回值組成新數組,原數組不變慎譽
過濾通過寬斗段條件的元素組成一個新數組,原數組不變
查找出第一個符合條件的數組成員,並返回該成員,如果沒有找到就返回undefine
找到的是位置,找不到返回 -1
填充, arr.fill(填充的東西,start,end) 包括end
『伍』 Javascript如何過濾數組
你這個數據格式就有問題吧。。
應該是這樣的:
var arr = {
"list":
回[{name:"tony","age":22},
{name:"JOE","age":22},
{name:"jod","age":23},
{name:"Kim","age":24}]
};
過濾答:
var array = new Array();
for(var i = 0; i < arr.list.length; i++){
if (arr.list[i].age == 22 ) array.push(arr.list[i]);
}
輸出:
var str="";
for (var j = 0; j < array.length; j++){
str += "name:" + array[j].name + " age:"+array[j].age+"\n";
}
alert(str);
『陸』 js對象操作——多條件篩選
之前在做多條件篩選時用到了對象,蔽棚消多條件篩選的思路,並總結了幾個關於對象的操作
var array = new Object()
創建一個空對象用來存儲你傳的參數,就是每個點擊事件都要傳參且也要將參數存儲起來
同時篩選裡面也會涉及到清空參數以及刪除某一個值,例子:宏知
var array={"name": "xiaojiayu", "age"和尺: 24, "gender": "man","sex":""};
1、刪除對象里某一個值
delete array.name
2、清空對象
for(var key in array){
delete array[key]
}
3、清除對象里空的鍵值對
for(var key in array){
if(array[key] === ""){
delete array[key]
}
}
『柒』 請教大神,js如何根據id對對象數組篩選
functionmyFilter(arr1,arr2){
returnarr1.filter((ele)=>
arr2.filter((x)=>x.id===ele.id).length>0
);
}
在 chrome 瀏覽器下測試可行。
functionmyFilter2(arr1,arr2){
varret=[];
arr2.forEach(
ele=>{
varfindEle=arr1.find(x=>x.id===ele.id);
//如果在arr1中找到,添加到arr1中
findEle?ret.push(findEle):'';
}
);
returnret;
}
這個思路是把b中的每一個id都在a中找一下。
『捌』 js怎麼取一個數組中的奇數位元素或者偶數位元素
js中有一個函數filter(),可以用來過濾數組中的特定元素;
filter() 方法創建一個新的數組,新數組中的元素是通過檢查指定數組中符合條件的所有元素。
注意: filter() 不會對空數組進行檢測。
注意: filter() 不會改變原始數組。
語法 : filter((item, index, arr) =>薯首 { ... })
filter中一共可已設置三個入參:其中item( 必填 )--代表數組中的每個元悶早素,filter會對每個元素進行遍歷;
index( 先填 )--每個元素的index;arr( 選填 )--指定要遍歷的數組。
要篩選數組數罩數中的奇數位元素或者偶數位元素就可以用filte()方法。
例子: