【发布时间】:2012-02-24 17:11:38
【问题描述】:
var results = ['one', 'two', 'one hundred', 'three'];
var removal = [];
$.each(results, function(i) {
removal.push(i);
if (results[i].indexOf('one') == -1){
console.log('Removing:' + results[i] + '(' + removal[i] + ')');
results = results.splice(removal[i], 1);
}
});
我有以下代码,但在删除第一个结果后它会中断。
我希望它删除任何不包含“一”字的内容。
我猜它正在中断,因为移除顺序一旦被移除就会改变。
我做错了什么?
【问题讨论】:
-
上面的代码实际上应该做什么?假设您按照以下答案解决了
$.each()循环的问题,您仍然将数组indexes 推入removal数组,因此当循环结束时removal是[0,1,2,3]。您是否打算将 值 推送到removal中?此外,您在 if 测试之前将它们推入,因此removal实际上并没有跟踪删除的内容。在您的if中,您使用i作为removal和results的索引,即使这些数组的长度不同,因为您要向removal添加元素并从results中删除元素。
标签: javascript jquery