1. 程式人生 > >node js 判斷陣列中是否包含某個值

node js 判斷陣列中是否包含某個值

判斷陣列中是否包含某個值這裡有四種方法。
用的測試資料:

let arr=["a","b","c"];
let arr2={"a":"aaa","b":"bbb","c":"ccc"};

in判斷是否在陣列的key裡

in操作符針對的是key,而非value。而對於普通的一維陣列來說,key是隱藏的。所以,對於判斷某個陣列中是否含有某個值來說,這個方案並不合適。

console.log("1:","a" in arr);  // false
console.log("2:","aa" in arr);  // false
console.log("3:",2 in arr)
; // true console.log("4:",5 in arr); // false console.log("5:","a" in arr2); // true console.log("6:","aa" in arr2); // false

indexOf列表(字串)是否包含

indexOf僅用於字串、列表,不能用於JSON物件(字典)。

console.log("7:",arr.indexOf("c"));  // 2
console.log("8:",arr.indexOf("aa"));  // -1
console.log("9:",arr2.indexOf("b"));  //報錯
console.log("10:",arr2.indexOf("aaa")); //報錯

includes用於列表和字串

includes僅用於字串、列表,不能用於JSON物件(字典)。
返回值為布林值。

console.log("11:",arr.includes("a"));  // true
console.log("12:",arr.includes("aa"));  // false
console.log("13:",arr2.includes("a"));  //報錯
console.log("14:",arr2.includes("aa"));  //報錯

自定義函式inArray

自定義函式inArray可以用於陣列,也可以用於物件。

function inArray(search,array){
    for(var i in array){
        if(array[i]==search){
            return true;
        }
    }
    return false;
}
console.log("15:",inArray("a",arr));
console.log("16:",inArray("aa",arr));
console.log("17:",inArray("a",arr2));
console.log("18:",inArray("bbb",arr2));

總結

陣列是否包含某個值的判斷方案有:includes/indexOf/inArray
陣列是否包含有個鍵的判斷方案是:in
物件是否包含某個屬性值的方案是:inArray
物件是否包含某個屬性名的方案是:in
陣列或者物件通用的判斷方式包括:in/inArray

參考:http://newsn.com.cn/say/nodejs-inarray.html