Javascript find 方法在第一次匹配后不会停止

Javascript find method doesn't stop after first match

本文关键字:find 方法 第一次 Javascript      更新时间:2023-09-26

我的问题是,我想通过javascript提取一个特定的css类(grid-8/col-4)。

如果所需的类是第一个或唯一的数组元素,javascript 函数"find"会为匹配元素返回未定义,这对我来说没有意义。查找方法规范

我找不到错误。每个控制台.log语句都返回预期值,但"find"函数除外。

希望你能给我一个提示!

.HTML:

<div class="grid-8 layout">
    <div class="col-4 master">
            <h1>Headline</h1>
            <p>Lorem ipsum dolor sit amet.</p>
    </div>
</div>

JavaScript:

$(function() {
    var $layout = $(".layout");
    var $elem = $(".master");
    var layoutColumNumber = getNumberOfColums($layout, 'grid');
    var elementColumNumber = getNumberOfColums($elem, 'col');
    function getNumberOfColums(object, type){
        var classArray = getElementClassArray(object);
        var elementColWidth = null;
        switch(type){
            case 'grid':
            elementColWidth = classArray.find(gridClassPosition).split("-")[1];
            break;
            case 'col':
            elementColWidth = classArray.find(colClassPosition).split("-")[1];
            break;
        }
        return elementColWidth;
    }
    function getElementClassArray(object){
        return object.attr('class').split(' ');
    }
    function gridClassPosition(element, index, array){
        return (element.startsWith('grid-')) ? index : false;
    }
    function colClassPosition(element, index, array){
        return (element.startsWith('col-')) ? index : false;
    }
});

答案是,数组中第一个元素的索引为 0。在 JavaScript 中,0 没有真正的值。这是一个错误的值。
这就是为什么 find 函数返回规范中正确描述的"未定义"的原因。

在这种情况下,返回值无关紧要。因此,如果"find"到达所需的元素,则返回true就足够了。

使用console.log(classArray.find(colClassPosition))您将看到数组中有当前元素,而您可以在其中调用 split 函数。