的特定仅需要n个元件。例如我有一个数组的Javascript删除阵列
变种水果= [“香蕉”,“橙”,“苹果”,“芒果”,“应用”, “人”];
代码
fruits.splice(2, 2);
回到我输出
香蕉,橘子,应用程序,男人
但如何从返回数组只有1,3,4元素没有循环?
所以我会得到
橙,芒果,应用
我成像必须是类似的东西
fruits.splice(fruits.indexOf(Orange,Mango,App), 1);
的特定仅需要n个元件。例如我有一个数组的Javascript删除阵列
变种水果= [“香蕉”,“橙”,“苹果”,“芒果”,“应用”, “人”];
代码
fruits.splice(2, 2);
回到我输出
香蕉,橘子,应用程序,男人
但如何从返回数组只有1,3,4元素没有循环?
所以我会得到
橙,芒果,应用
我成像必须是类似的东西
fruits.splice(fruits.indexOf(Orange,Mango,App), 1);
您可以使用filter
过滤掉某些项目:
fruits = fruits.filter(function (e, i) {
return i === 1 || i === 3 || i === 4;
});
或者,如果你想保留根据其身份(这似乎是你想在你的问题到底该干什么)某些项目:
fruits = fruits.filter(function (e) {
return e === "Orange" || e === "Mango" || e === "App";
});
您可以结合slice
和splice
方法:
var fruits = ["Banana", "Orange", "Apple", "Mango", "App", "Man"];
fruits.splice(2,1);
var x = fruits.slice(1,4);
x;
说明:
splice
删除1个元件开始于索引2(即。 “苹果” )。slice
提取从索引1开始的3个元素(即“Orange”,“Apple”,“Mango”,“App”;请记住,此时数组不再包含“Apple”)。变化(无损):
var fruits = ["Banana", "Orange", "Apple", "Mango", "App", "Man"];
var x = fruits.slice(1,2).concat(fruits.slice(3,5));
x;
,你可以在你想保留这些元素的列表,通过同为JLRishe的答案,但是增加:
var fruits = ["Banana", "Orange", "Apple", "Mango", "App", "Man"];
var list = 'Orange, Mango, App';
alert(strip(fruits, list)); // ["Orange", "Mango", "App"]
function strip(arr, list) {
list = list.split(', ');
return arr.filter(function (el) {
return list.indexOf(el) > -1;
});
}
不错,但@JLRishe更短,过分+1 – 2015-03-13 11:49:40
谢谢。我允许更多的灵活性tho :) – Andy 2015-03-13 11:58:27
灵活性,如果按名称搜索我需要的元素位置 – 2015-03-13 12:00:28
应该指出的是,'filter'功能仍在循环。 – 2015-03-13 11:44:56
@AaditMShah是的,我没有注意到“没有循环”部分的问题,但添加或删除数组中的项目几乎总是需要某种循环,而且上面的代码更干净,更容易出错一个明确的循环。 – JLRishe 2015-03-13 11:47:45