js中常用的一些方法

1.filter(function, iterable)
參數,是數組的方法
function – 判斷函數。
iterable – 可迭代對象。

#過濾列表中所有奇數
def is_odd(n):
return n % 2 == 1
tmplist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
newlist = list(tmplist)
print(newlist)

用法二:

在這裏插入圖片描述
2.數組中的find的方法
find() 方法返回數組中滿足提供的測試函數的第一個元素的值。否則返回 undefined。
示例如下:

示例一:
const array1 = [5, 12, 8, 130, 44];

const found = array1.find(element => element > 10);

console.log(found);
// expected output: 12
示例二:
var inventory = [
    {name: 'apples', quantity: 2},
    {name: 'bananas', quantity: 0},
    {name: 'cherries', quantity: 5}
];

function findCherries(fruit) { 
    return fruit.name === 'cherries';
}

console.log(inventory.find(findCherries)); // { name: 'cherries', quantity: 5 }

3.數組的map方法

var removeElement = function(nums, val) {
            nums.map(function (item, index){
                if(item === val){
                    console.log(index); // 2 3  第一次原數組輸出val項的index爲2,下邊splice改變了原數組爲[1,2,4,3,5],在執行函數進入判斷輸出val項的index爲3
                    nums.splice(index, 1);
                }
            });
        };
        removeElement([1,2,3,4,3,5], 3);

通過以上例子可以看出,如果我們在某一次循環改變原數組的話,那麼接下來循環的處理是在已經改變的數組的基礎上進行的。
4.數組中的some方法
在這裏插入圖片描述
5.數組中的every方法
在這裏插入圖片描述

6.Object.keys(obj)
let person = {name:“張三”,age:25,address:“圳”,getName:function(){}};
console.log(Object.keys(person));
在這裏插入圖片描述
3.處理數組,返回索引值數組
let arr = [1,2,3,4,5,6];
console.log(Object.keys(arr)); //[“0”, “1”, “2”, “3”, “4”, “5”]
4.處理字符串,返回索引值數組
let str = “ikun你好”;
console.log(Object.keys(str)); // [“0”, “1”, “2”, “3”, “4”, “5”]
5常用技巧
let person = {name:“張三”,age:25,address:“深圳”,getName:function(){}};
Object.keys(person).map((key)=>{
console.log(person[key]); // 獲取到屬性對應的值,做一些處理
})
在這裏插入圖片描述
6.Object.value(obj)
1.返回一個數組,成員是參數對象自身的(不含繼承的)所有可遍歷屬性的鍵值

let obj = {
    foo : "bar",
    baz : 20
};
console.log(Object.values(obj));  // ["bar", 20]

2.返回數組的成員順序,與屬性的遍歷部分介紹的排列規則一致

const obj = {100 : "a", 2 : "b", 7 : "c"};
console.log(Object.values(obj));   //["b", "c", "a"]

屬性名爲數值的屬性,是按照數值大小,從小到大遍歷的,因此返回的順序是b、c、a。
3.Object.values()只會遍歷對象自身的可遍歷屬性

const obj = Object.create({},{p : {value : 10}});
console.log(Object.values(obj));    
console.log(Object.getOwnPropertyDescriptors(obj));

在這裏插入圖片描述
Object.create方法的第二個參數添加的對象屬性(屬性p),如果不顯式聲明,默認是不可遍歷的,因爲p的屬性描述對象的enumerable默認是false,Object.values不會返回這個屬性。
因此只要把enumerable改成true,Object.values就會返回屬性p的值。

const obj = Object.create({},{p:{
     value : 10,
     enumerable : true,
     configurable : true,
     writable : true,
}})
console.log(Object.values(obj));    //[10]

4.Object.values會過濾屬性名爲 Symbol 值的屬性

//如果Object.values方法的參數是一個字符串,會返回各個字符組成的一個數組。
Object.values({ [Symbol()]: 123, foo: 'abc' });
console.log(Object.values('foo'));  //["f", "o", "o"]

字符串會先轉成一個類似數組的對象,字符串的每個字符,就是該對象的一個屬性。因此,Object.values返回每個屬性的鍵值,就是各個字符組成的一個數組
5.如果參數不是對象,Object.values會先將其轉爲對象

console.log(Object.values(42));  // []
console.log(Object.values(true));  // []
console.log(Object.values(undefined));   //error
console.log(Object.values(null));   //error

由於數值和布爾值的包裝對象,都不會爲實例添加非繼承的屬性,因此Object.values會返回空數組。
7.Object.entries()
1.Object.entries方法返回一個數組,成員是參數對象自身的(不含繼承的)所有可遍歷(enumerable)屬性的鍵值對數組

var obj = { foo: 'bar', baz: 42 };
console.log(Object.entries(obj));

在這裏插入圖片描述
2.如果原對象的屬性名是一個 Symbol 值,該屬性會被省略

console.log(Object.entries({ [Symbol()]: 123, foo: 'abc' }));  // [ [ 'foo', 'abc' ] ]

3.原對象有兩個屬性,Object.entries只輸出屬性名非 Symbol 值的屬性。
遍歷對象的屬性

let obj = {
    one : 1,
    two : 2,
}
for(let [k , v] of Object.entries(obj)){
     console.log(`${JSON.stringify(k)} : ${JSON.stringify(v)}`);
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章