从数组中检索均匀分布的元素数

2024-05-21

我知道如何提取数组中的每个第 n 项,但我遇到的困难如下:

如何从 1800 个元素的数组中提取第 n 个项目,始终包括第一个和最后一个元素,总共最多 256 个元素?

Example:

array = [1,2,3,4,5,6,7,8,9,10];

提取5个元素:

extract = [1,3,5,7,10];

像这样?

/**
 * Retrieve a fixed number of elements from an array, evenly distributed but
 * always including the first and last elements.
 *
 * @param   {Array} items - The array to operate on.
 * @param   {number} n - The number of elements to extract.
 * @returns {Array}
 */
function distributedCopy(items, n) {
    var elements = [items[0]];
    var totalItems = items.length - 2;
    var interval = Math.floor(totalItems/(n - 2));
    for (var i = 1; i < n - 1; i++) {
        elements.push(items[i * interval]);
    }
    elements.push(items[items.length - 1]);
    return elements;
}

Example:

// Set up an array for testing purposes
var items = [];
for (var i=1; i<= 1800; i++) {
    items.push(i);
}

var extracted = distributedCopy(items, 256);

console.log(extracted);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从数组中检索均匀分布的元素数 的相关文章

随机推荐