日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

javascript陷阱之in语句

發布時間:2023/12/13 综合教程 22 生活家
生活随笔 收集整理的這篇文章主要介紹了 javascript陷阱之in语句 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在擼公司的項目,前后端加后臺的數據分析一起挑,腦子里的js語法和Python語法大亂斗,由此鬧出了很多讓人哭笑不得的烏龍,比如今晚踩的一個js的坑。

先拋出兩張圖作比較(上圖為Python語句,下圖為javascript):

很好,in語句似乎通用于py和js判斷一個元素是否存在于數組之中,然而,神奇的還在下面(javascript代碼):

???3不在數組[3 , 2 , 1]里???

???"a"不在數組["a" , "b"]里???

問題在于,in在JavaScript世界中的作用和in在Python世界中的作用有所不同。

in語句在Python世界中即可用于List對象,也可用于Dict對象(val1 in dict1 判斷val1是否在dict1的key的集合里)。

然而,in語句在JavaScript中只可用于Object對象,正確用法如下圖:

那么在寫JavaScript代碼的時候,如何判斷元素是否存在于Array對象中呢?

1.原生js方法之遍歷大法:

1 function in_array(searchString,array) {
2   for (i=0;i<array.length;i++) {
3     if ( searchString == array[i] ) return true;
4   }
5   return false;
6 }
7 if ( in_array('oak',trees) ) document.write('true'); //顯示true
8   else document.write('false');

2.原生js方法之合理利用in操作符:

(既然我們知道in 可以用于判斷對象的屬性值,那么,同樣的,我們可以把數組一一映射到對象的屬性,然后再用in 判斷。)

 1 function oc(a)
 2 {
 3   var o = {}; //相當于var o = new Object();
 4   for(var i=0;i<a.length;i++)
 5   {
 6     o[a[i]]=''; //注意該寫法,不能寫成o.a[i]
 7   }
 8   return o;
 9 }
10 if ( 'oak' in oc(trees) ) document.write('true'); //顯示true
11   else document.write('false');
12 o = oc(trees);
13 if ( o.oak != 'undefined' ) document.write('true'); //顯示true
14   else document.write('false'); //true
15 if ( o['oak'] != 'undefined' ) document.write('true'); //顯示true
16   else document.write('false'); //true

參考自:https://snook.ca/archives/javascript/testing_for_a_v

3.jquery大法:

1 $.inArray(value, array)   

總結

以上是生活随笔為你收集整理的javascript陷阱之in语句的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。