ホームページ > バックエンド開発 > PHPチュートリアル > javascript怎样实现类似php中in_array()的功能

javascript怎样实现类似php中in_array()的功能

WBOY
リリース: 2016-06-06 20:51:51
オリジナル
1505 人が閲覧しました

就是判断一个元素是否存在于数组中的函数,既然js里string都有indexOf函数,为什么不在Array对象里设置一个这样的函数呢,其实就用indexOf这个思想挺好的,不知道制定JS标准的人是基于什么考虑,把这样一个如此常用的功能没考虑在内的。

各位有什么好办法来实现这个功能吗?

回复内容:

就是判断一个元素是否存在于数组中的函数,既然js里string都有indexOf函数,为什么不在Array对象里设置一个这样的函数呢,其实就用indexOf这个思想挺好的,不知道制定JS标准的人是基于什么考虑,把这样一个如此常用的功能没考虑在内的。

各位有什么好办法来实现这个功能吗?

我不会告诉你有这么一个网站的:http://phpjs.org/ 哈哈

用 github 上的项目来回答问题。 欢迎关注 github那些事儿


php.js implements PHP functions in JavaScript。github 地址:https://github.com/kvz/phpjs

indexOf在ECMAScript 5th中是有的,参考:https://developer.mozilla.org/en-US/d...

if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
        "use strict";
        if (this == null) {
            throw new TypeError();
        }
        var t = Object(this);
        var len = t.length >>> 0;
        if (len === 0) {
            return -1;
        }
        var n = 0;
        if (arguments.length > 1) {
            n = Number(arguments[1]);
            if (n != n) { // shortcut for verifying if it's NaN
                n = 0;
            } else if (n != 0 && n != Infinity && n != -Infinity) {
                n = (n > 0 || -1) * Math.floor(Math.abs(n));
            }
        }
        if (n >= len) {
            return -1;
        }
        var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
        for (; k <p>其实不止indexOf,lastIndexOf,filter,forEach,every,map,some等等在ECMAScript 5th 中都有实现, 各个javascript库也有相关的代码,可以去看看。</p>
                            
            <p class="answer fmt" data-id="1020000000122662">
                                    </p><p>jQuery中有类似的函数:http://docs.jquery.com/Utilities/jQue...</p><p>它的代码如下:</p><pre class="brush:php;toolbar:false">function inArray(needle, haystack) {
    var length = haystack.length;
    for(var i = 0; i 
                            
            <p class="answer fmt" data-id="1020000000122766">
                                    </p><p>underscore.js 是一个非常强大的js库,增添了很多js强化功能,同时也是很多js开源项目的基础库——例如著名的mvc框架Backbone.js。</p><p>其中有求元素在array中的索引的方法</p><p>http://underscorejs.org/#indexOf</p><pre class="brush:php;toolbar:false">_.indexOf(array, value, [isSorted]) 

_.indexOf([1, 2, 3], 2);
=> 1
ログイン後にコピー

如果你的数组里都是纯数字的话,那么告诉你一个比较简便的方法

// 比如判断2312是否在这个数组中
('|' + [2312,3331,423456].join('|') + '|').indexOf('|' + 2312 + '|')
ログイン後にコピー

模拟实现哦

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート