javascript - 通过评估元素的数组子集

标签 javascript arrays underscore.js

我正在尝试使用下划线从 javascript 中的数组中获取一系列子集。这是我想要实现的目标:

Original array: [1,1,1,2,2,2,0,0,0,1,1,1]
Expected result: [1,1,1] [2,2,2] [0,0,0] [1,1,1]

当我使用下划线的过滤方法时,我得到了三个数组:[1,1,1,1,1,1] [2,2,2] [0,0,0]; 我希望最后一个 1 数组不会混合。

我尝试过的:

_.filter(array, function(e){
     return e === 1;
})

拆分原数组的准则是连续相等的数必须组成一个新的数组,但如果该数在原数组后面出现,则该连续相等的数必须组成一个数组。

有没有办法使用下划线来做到这一点,还是应该用循环来完成?

谢谢

最佳答案

不确定 underscrore.js 中是否有特定的东西可以做到这一点,但我确信它可以用下划线语法来完成。但是,您可以在 POJS 中执行类似的操作。

Javascript

var testArray = [NaN, NaN, NaN, undefined, undefined, undefined, null, null, null, 1, 1, 1, 2, 2, 2, 0, 0, 0, 1, 1, 1];

function is(x, y) {
    if (x === y) {
        if (x === 0) {
            return 1 / x === 1 / y;
        }

        return true;
    }

    var x1 = x,
        y1 = y;

    return x !== x1 && y !== y1;
}

function arraySplitToGroups(array) {
    var length = array.length,
        i = 0,
        newArray = [],
        subArray = [],
        current,
        last;

    while (i < length) {
        current = array[i];

        if (!is(last, current)) {
            if (subArray.length) {
                newArray.push(subArray);
            }

            subArray = [];
        }

        subArray.push(current);
        last = current;
        i += 1;
    }

    if (subArray.length) {
        newArray.push(subArray);
    }

    return newArray;
}

console.log(arraySplitToGroups(testArray));

输出

[ [NaN, NaN, NaN], [undefined, undefined, undefined], [null, null, null], [1, 1, 1], [2, 2, 2], [0, 0, 0], [1, 1, 1] ] 

关于 jsfiddle

更新:出于纯粹的兴趣,我获取了当前页面上的所有答案并创建了一个 jsperf。为他们。

关于javascript - 通过评估元素的数组子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17163742/

相关文章:

c++ - 如何使用预定义计数在 C++ 中初始化 vector<int> 数组?

java - 从字符串数组中删除正则表达式

javascript - 下划线包含基于对象属性

javascript - 使用 Service Worker 预缓存静态文件

javascript - ReactJS 从一个模块导出常量和组件

javascript - 如何通过puppeteer获取嵌入页面的pdf?

javascript - 如何将 Q Promise 与下划线过滤器一起使用

javascript - 如何使用 PapaParse 从文件中解析 CSV?

javascript - 理解有点奇怪的 javascript 数组表示法

json - 使用主干模型使用下划线模板引擎渲染 html 表