我有以下数组设置,我,e:
var myArray = new Array();
使用这个数组,我会在用户添加更多菜单项时动态创建面包屑菜单。我还允许他们通过点击eatch breadcrumb菜单项旁边的十字架来删除特定的面包屑菜单项。
数组可能包含以下数据:
myArray[0] = 'MenuA';
myArray[1] = 'MenuB';
myArray[2] = 'MenuC';
myArray[3] = 'MenuD';
myArray[4] = 'MenuE';
我的问题是:
a)在JavaScript中,如何从myArray中删除元素[1],然后重新计算索引,或者这是不可能的?
b)如果我不想要菜单选项MenuB,我是否需要将其拼接以将其删除?
我的问题是,如果用户删除菜单项以及最后创建新闻,那么这些元素的索引将如何展开?
我只是希望能够删除项目,但不知道如何处理数组索引。
答案 0 :(得分:30)
您可以使用myArray.push('MenuA');
,这样在添加元素时就不会指定直接数字。
删除元素I.E. 'MenuB':
// another quick way to define an array
myArray = ['MenuA', 'MenuB', 'MenuC', 'MenuD', 'MenuE'];
// remove an item by value:
myArray.splice(myArray.indexOf('MenuB'),1);
// push a new one on
myArray.push('MenuZ');
// myArray === ["MenuA", "MenuC", "MenuD", "MenuE", "MenuZ"]
答案 1 :(得分:20)
我喜欢Array.remove的this implementation,它基本上抽象了splice函数的使用:
// Array Remove - By John Resig (MIT Licensed)
Array.prototype.remove = function(from, to) {
var rest = this.slice((to || from) + 1 || this.length);
this.length = from < 0 ? this.length + from : from;
return this.push.apply(this, rest);
};
用法:
// Remove the second item from the array
array.remove(1);
// Remove the second-to-last item from the array
array.remove(-2);
// Remove the second and third items from the array
array.remove(1,2);
// Remove the last and second-to-last items from the array
array.remove(-2,-1);
答案 2 :(得分:3)
http://www.w3schools.com/jsref/jsref_splice.asp
Splice应重新计算正确的索引以供将来访问。
答案 3 :(得分:0)
您不需要编写函数,可以使用indexOf()和splice()这两个函数。
您可以删除元素的任何位置元素。 例如: var name = [&#39; james&#39; ,&#39;汤米&#39; ,&#39;吉米&#39; ,&#39;霍隆&#39;]; var name = name.splice(name.indexOf(&#39; Jimmy&#39;),1);
答案 4 :(得分:0)
按位置/元素删除数组元素(修改实际数组)
1-arr.splice(1,1)-----> (索引,没有元素)
2-arr.splice(arr.indexOf(5),1)-----> (array.indexOf( InputValue ),没有元素)
let arr = [1,2,3,4,5];
console.log(arr.splice(1,1)); // [2]
console.log(arr.splice(arr.indexOf(5), 1)); // [5]
console.log(arr); // [1, 3, 4]
按位置/元素删除数组元素(创建副本数组)
let arr2 = [10, 20, 30, 40]
let result = arr2.filter(a=> a!==20);
let result2 = arr2.filter(a=> a!==arr2[arr2.indexOf(30)])
console.log(result) // [10, 30, 40]
console.log(result2) // [10, 20, 40]