我有一系列位置,我需要能够分别访问起点、中间点和目的地。
我知道我的原点总是第一个元素,目的地总是最后一个元素,但我无法弄清楚如何动态访问所有中间点?
由于没有数据,我采用一个基本数组来显示。同样通过这种方法,您将保留原始数组。
var arr = [1,2,3,4,5,6,7];
var middle = arr.slice(1, -1);
console.log(middle);
或
var arr = [1,2,3,4,5,6,7];
var middle = arr.slice(1, arr.length-1);
console.log(middle);
为此,您可以使用shift()
和pop()
分别获取数组的第一个和最后一个元素。在这些操作之后,数组中剩下的任何东西都将是你的"中间点"。试试这个:
var middlePoints = ['start', 'A', 'B', 'C', 'end'];
var origin = middlePoints.shift();
var destination = middlePoints.pop();
console.log(origin);
console.log(middlePoints);
console.log(destination);
移位和弹出会影响当前数组;有没有办法让中间点改变当前数组?喜欢切片,但切片不影响它
当然,您可以使用filter()
,检查数组中项目的索引:
var input = ['start', 'A', 'B', 'C', 'end'];
var output = input.filter((v, i) => i !== 0 && i !== input.length -1);
console.log(input); // original value retained
console.log(output); // copied via filter
像这样的东西?
var allPoints = [0, 1, 2, 3, 4, 5],
midPoints = []
/*start the iteration at index 1 instead of 0 since we want to skip the first point anyway and stop iteration before the final item in the array*/
for (var i = 1; i < (allPoints.length - 1); i++) {
midPoints.push(allPoints[i]);
}
console.log(midPoints);