我要实现的目的是通过删除数组元素的索引并将其其余部分移到左侧。
因此,对数组['a','b','c','d']
的第二个元素进行deleteshifting返回数组['a','c','d']
。
我设法使用下面的代码来做到这一点,我想知道是否存在一些内置方法(或它们的组合)以更简洁的方式做到这一点。
var src = ['a', 'b', 'c', 'd'];
const delShiftLeft = (arr, index) => arr.slice(0,index).concat(arr.slice(index+1));
console.log(delShiftLeft(src,1));
答案 0 :(得分:4)
您可以使用方便的Array.prototype.splice方法。它接受以下3个参数:
因此,对于您的情况,您只需要执行arr.splice(index, 1)
。请记住,拼接将返回所有已删除元素的数组,而不是更改后的数组。
这里是一个示例,您可以使用以下命令测试splice
:
var original = ["a", "b", "c", "d"];
var removed = document.querySelector("#removed");
var result = document.querySelector("#result");
Object.defineProperty(this, "index", {
get: function() {
return +document.querySelector("#index").value;
}
});
Object.defineProperty(this, "count", {
get: function() {
return +document.querySelector("#count").value;
}
});
document.querySelector("#index").addEventListener("change", calculate);
document.querySelector("#count").addEventListener("change", calculate);
function calculate() {
var array = original.slice(0);
var removedArray = array.splice(index, count, "e", "f");
removed.innerHTML = removedArray.map(toLI).join("");
result.innerHTML = array.map(toLI).join("");
}
function toLI(text) {
return "<li>" + text + "</li>";
}
calculate();
<input type="number" id="index" value="1" min="0" max="4">
<input type="number" id="count" value="1" min="0" max="4">
<span>Adding ["e", "f"] to list</span>
<br/>
<span>Removed: </span>
<ul id="removed"></ul>
<span>Result: </span>
<ul id="result"></ul>
答案 1 :(得分:2)
您要查找的方法是splice
:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
arr.splice(index, 1)
答案 2 :(得分:0)
您可以使用数组的过滤方法。
var src = ['a', 'b', 'c', 'd'];
console.log(src.filter((e,i)=> i!==1));