Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不复制数组的情况下返回Javascript中减去单个项的数组?_Javascript_Node.js_Sorting - Fatal编程技术网

如何在不复制数组的情况下返回Javascript中减去单个项的数组?

如何在不复制数组的情况下返回Javascript中减去单个项的数组?,javascript,node.js,sorting,Javascript,Node.js,Sorting,可能重复: 我正在维护字符串列表,如 var keyString = []; keyString.push("anotherString"); keyString.push("yetAnotherString"); keyString.push("oneLastString"); 我希望能够返回键串的所有结果,而不是我已经知道的值 例如,如果我有另一个字符串,那么我想返回数组中不是另一个字符串的所有内容 显然,这可以通过几种方式轻松实现,但我有一些限制 我不希望解决方案使用任何循环,也不希

可能重复:

我正在维护字符串列表,如

var keyString = [];

keyString.push("anotherString");
keyString.push("yetAnotherString");
keyString.push("oneLastString");
我希望能够返回键串的所有结果,而不是我已经知道的值

例如,如果我有另一个字符串,那么我想返回数组中不是另一个字符串的所有内容

显然,这可以通过几种方式轻松实现,但我有一些限制

我不希望解决方案使用任何循环,也不希望使用过多的内存,也不希望修改原始数组

这可能是不可能的,但我想我会把它扔出去,看看是否存在任何东西。

您可以使用,但这也会返回一个新数组:

var newArray = keyString.filter( function( el ) {
  return el !== 'anotherString';
} );

考虑示例代码的一些可能性,但在函数或返回中没有意义。示例假定您可以修改原始数组,因为您不想复制

一,。用于删除第一个元素

二,。用于删除最后一个元素

三,。用于删除中间元素


不是防弹的,但它可以工作:

var a = ["a", "b", "c", "d"];
a.splice( a.indexOf("c"), 1 );

console.log(a); // ["a", "b", "d"];

请注意,.splice和.unshift很可能是线性时间,尽管可能是用本机代码实现的。也就是说,它们可能是内部循环,如果这对OP很重要的话。这些循环不起作用,因为我无法确定它是数组中的第一个或最后一个项,并且splice修改了原始数组。我将进行编辑,将其作为restriction@user1500053所以您不想修改原始数组,也不想复制?“那我想没办法了。”尖头抱歉问,OP是什么意思。我今天已经看过好几次了,我还不知道yetI在想,也许有一种方法可以返回一个数组,该数组是对原始数组中对象的引用。但我猜,在retrospect中,阵列只是引用对象,因此过滤器可能会工作。您不想复制阵列,也不想修改原始阵列,但希望最终得到原始阵列的修改版本。这到底是怎么回事?这里有一些神奇的粉末可以让它消失。这不是从数组中移除某些东西的远程复制。它是完全复制的,直到你改变了问题使它成为一个不可能的请求。@user1689607:可能是OP的另一个帐户来补偿减少的投票。。。
function something() {
    someObject["keyString"] = [];
    someObject["keyString"].push("yetAnotherString");
    someObject["keyString"].push("oneLastString");
    someObject["keyString"].push("anotherString");
    someObject["keyString"].pop(); 
    return someObject;
}
function something() {
    someObject["keyString"] = [];
    someObject["keyString"].push("yetAnotherString");
    someObject["keyString"].push("anotherString");
    someObject["keyString"].push("oneLastString");
    someObject["keyString"].splice(1,1); 
    return someObject;
}
var a = ["a", "b", "c", "d"];
a.splice( a.indexOf("c"), 1 );

console.log(a); // ["a", "b", "d"];