我目前在下面有以下代码。这样做很好,但我认为有一种更有效的方法来做“移位”和“弹出”,而不是一个接一个地做。仍然了解它是如何工作的,所以任何提示/技巧/推荐都将不胜感激
我循环遍历每个列表项,获取值,然后将其添加到数组中。一旦我拥有它们,如下所示,我删除了第一个和最后一个值,因为这些值只是第一个和最后一个之间的点(如果有的话)
var waypts = [];
var inputArray = $('#enter-destinations li').each(function () {
var thisAddress = $(this).find('input').val();
waypts.push({ location : thisAddress, stopover: true });
});
waypts.shift(); //remove first
waypts.pop(); //remove last
console.log(waypts); //show values that were between first and last
答案 0 :(得分:2)
使用array#slice
。
waypts = waypts.slice(1, waypts.length - 1)
答案 1 :(得分:2)
在循环遍历数组时跳过第一个和最后一个元素:
import numpy as np
a=[]
b=[]
for i in range(0,100): #alternating list of ints and nan
if i/2. == i/2:
a.append(i)
else:
a.append(np.mean([])) #the only way I know how to make nan
b.append(i*100)
atemp=a
print(len(a),len(atemp))
for i,v in enumerate(atemp):
if np.isnan(v):
a.pop(i)
b.pop(i)
print(len(a),len(atemp))
答案 2 :(得分:1)
直接在jQuery .each()
循环中使用索引,以避免首先添加它们。您还可以避免2x .find()
和2x .push
。
var waypts = [];
var elem = $('#enter-destinations li');
var total = (elem.length-1); // get last index
var inputArray = elem.each(function (index) { // index tells you what iteration you are at
if(index != total && index != 0){
var thisAddress = $(this).find('input').val();
waypts.push({ location : thisAddress, stopover: true });
}
});
console.log(waypts); //show values that were between first and last
答案 3 :(得分:0)
在jsperf中可以看到,pop
和shift
看起来比slice
更快。
slice
创建一个新数组,pop
和shift
操纵当前数组。