我正在维护像
这样的字符串列表var keyString = [];
keyString.push("anotherString");
keyString.push("yetAnotherString");
keyString.push("oneLastString");
我希望能够从keyString
返回我已经知道的值的所有结果。
例如,如果我有 anotherString ,那么我想返回数组中不是 anotherString 的所有内容。
显然,这可以通过几种方式轻松完成,但我有一些限制。
我不希望解决方案使用任何循环,我不想使用过多的内存,我也不想修改原始数组。
这可能是不可能的,但我想我会把它扔出去看看是否存在。
答案 0 :(得分:2)
考虑您的示例代码的一些可能性,但在函数内部(或return
没有意义)。这些示例假设您可以修改原始数组,因为您不想复制。
<强> 1。使用shift
删除第一个元素
function something() {
someObject["keyString"] = [];
someObject["keyString"].push("anotherString");
someObject["keyString"].push("yetAnotherString");
someObject["keyString"].push("oneLastString");
someObject["keyString"].shift();
return someObject;
}
<强> 2。使用pop
删除最后一个元素
function something() {
someObject["keyString"] = [];
someObject["keyString"].push("yetAnotherString");
someObject["keyString"].push("oneLastString");
someObject["keyString"].push("anotherString");
someObject["keyString"].pop();
return someObject;
}
第3。使用splice
删除中间元素
function something() {
someObject["keyString"] = [];
someObject["keyString"].push("yetAnotherString");
someObject["keyString"].push("anotherString");
someObject["keyString"].push("oneLastString");
someObject["keyString"].splice(1,1);
return someObject;
}
答案 1 :(得分:1)
您可以使用filter()
,但这也会返回一个新数组:
var newArray = keyString.filter( function( el ) {
return el !== 'anotherString';
} );
答案 2 :(得分:1)
不是防弹但它有效:
var a = ["a", "b", "c", "d"];
a.splice( a.indexOf("c"), 1 );
console.log(a); // ["a", "b", "d"];