javascript - 将两个数组与范围组合

标签 javascript arrays

我正在尝试合并两个数组。这些数组中的每一个都有定义范围的子数组。我想将它结合起来,以便创建的新数组反射(reflect)基于两个数组中的值的新范围。示例:

//I would like to create a new array based on the ranges in a and b.
var a = [[0, 20], [20, 40], [40, 70]];
var b = [[10, 25], [25, 35]]

//The result reflects the new ranges based on values in both the arrays.
var result = [[0, 10], [10, 20], [20, 25], [25, 35], [35, 40], [40, 70]]

最佳答案

您可以收集一个对象中的所有值,对其进行排序并从中构建元组。

var a = [[0, 20], [20, 40], [40, 70]],
    b = [[10, 25], [25, 35]],
    values = Object.create(null),
    result = [];

a.concat(b).forEach(function (a) {
    values[a[0]] = true;
    values[a[1]] = true;
});

Object
    .keys(values)
    .map(Number)
    .sort(function (a, b) {
        return a - b;
    })
    .reduce(function (a, b) {
        result.push([a, b]);
        return b;
    });

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 将两个数组与范围组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46691811/

相关文章:

javascript - 如何在 Cloud Functions 中解析/返回 forEach 函数

java - 如何在java中访问动态字符串数组的元素?

ios - Swift 中的数组扩展,使用 NSPropertyListReadOptions 从 plist 读取数组

javascript - 使用 Ajax 插入成功但数据库行为空

javascript - HTML 页面中 javascript 文件的加载顺序

javascript - 想要更改保存图像文件夹的路径...如何做到这一点

javascript - 捕获 jQuery 表单提交事件

java - Java程序出现2个错误

java - 从文件输入填充数组

javascript - 无法添加到已初始化的数组中