如何从Javascript数组中选择非连续元素
How to select non-consecutive elements from a Javascript array?
如果我有一个数组,选择非连续元素的简单方法是什么?第二个和第五个元素,例如:
a = ["a","b","c","d","e"]
a.select_elements([1,4]) // should be ["b","e"]
编辑
我刚刚意识到我可以做[1,4].map(function(i) {return a[i]})
。有没有一种不那么冗长的方法?
如果您正在寻找使代码看起来更短的东西,您可以扩展Array以使用以下方法:
Array.prototype.select_elements = function(indices) {
var elements = [];
for (var i=0; i != indices.length; ++i)
elements.push(this[indices[i]]);
return elements;
}
现在你可以调用你想要的方法:
a.select_elements([1,4])
["b", "e"]
创建一个新数组,手动使用元素:
var select_elements = [a[1], a[4]];
或者创建一个从索引构建新数组的函数:
function selectElementsWithIndices(sourceArray, selectIndices)
{
var result = new Array();
for ( var i = 0; i < selectIndices; i++ ) {
var index = selectIndices[i];
result.push(sourceArray[index]);
}
return result;
}
var select_elements = selectElementsWithIndices(a, [1, 4]);
您可以安全地(不会出现在循环中)向所有数组添加一个函数:
Object.defineProperty(Array.prototype, 'get', {
__proto__: null,
value: function() {
return Array.prototype.slice.call(arguments).map(function(index){ return this[index] }.bind(this));
}
})
用法:
a = [1, 2, 3, 4, 5, 6];
a.get(1, 4);
非可变版本:
Object.defineProperty(Array.prototype, 'get', {
__proto__: null,
value: function(indices) {
return indices.map(function(index){ return this[index] }.bind(this));
}
})
用法:
a = [1, 2, 3, 4, 5, 6];
a.get([1, 4]);
没有任何内置。您可以这样做:
a.select_elements([a[1], a[4]]);
它构造一个新的数组,使用元素a[1]
和a[4]
,然后将其传递给a.select_elements
函数。
相关文章:
- 下拉选择可自动更改第二个下拉选择
- 如何使用jQuery选择下拉列表的值
- jquery点击函数select&取消选择
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 按照选项卡索引的顺序循环一个jQuery选择
- 在动态创建的元素上获取对特定选择器的引用
- AngularJS-在JSON选择器中使用变量名
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 获取选择框的状态
- d3基于用户选择动态更新节点
- 提交后保留下拉选择的值
- JQuery对动态创建的对象进行选择
- 无法在Ionic select中预先选择最后一个选项
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- jQuery自动完成阻止选择后聚焦
- 在选择其他下拉列表html和javascript araray的基础上,填充3个连续的下拉列表
- 如何创建一组从属选择列表,其中连续列表依赖于前面列表选项的选择
- 当用户选择几个连续的HTML标记时,将它们的颜色改回原来的颜色
- 两个连续的java脚本日期选择器函数
- 如何从Javascript数组中选择非连续元素