繁体   English   中英

从数组中根据它们在数组中的位置获取代表元素

[英]get the representative elements from an array according to their position inside the array

这个疑问是关于underscore.js但可以用普通的javascript解决。

假设我们有一个数组

['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

根据一个参数,我想只显示数组的X个代表性元素。

例如。

  • 如果我想要2个元素。 对我而言,代表将是:['Jan','Dec']
  • 3个元素:['Jan','Jul','Dec']
  • 4个元素:['Jan','Apr','Sep','Dec']
  • 所以...

Requeriments:

  1. 我总是想要第一个和最后一个元素
  2. 物品数量为2或更多

谢谢

从你的例子的模式来看,“代表”是中间的第一个,最后一个和N-2个元素。

function representative(arr, n) {
    n = Math.max(n, Math.min(arr.length, 2));
    var offset = (arr.length - 1) / (n - 1);
    var out = [];
    for(var i = 0; i < arr.length; i += offset) out.push(arr[0|Math.round(i)]);
    return out;
}

var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
console.log(representative(months, 2));
console.log(representative(months, 3));
console.log(representative(months, 4));

似乎有用,虽然“中间”的定义有争议......

// output
[ 'Jan', 'Dec' ]
[ 'Jan', 'Jul', 'Dec' ]
[ 'Jan', 'May', 'Aug', 'Dec' ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM