小编sco*_*ttt的帖子

如何在forEach循环中从数组中删除元素?

我试图在forEach循环中删除数组中的元素,但我遇到了我见过的标准解决方案的问题.

这就是我目前正在尝试的:

review.forEach(function(p){
   if(p === '\u2022 \u2022 \u2022'){
      console.log('YippeeeE!!!!!!!!!!!!!!!!')
      review.splice(p, 1);
   }
});
Run Code Online (Sandbox Code Playgroud)

我知道它正在进入,if因为我YippeeeeeE!!!!!!!!!!!!!在控制台中看到了.

我的问题:我知道我的for循环和逻辑是合理的,但是我尝试从数组中删除当前元素是失败的.

更新:

尝试了Xotic750的答案,该元素仍未被删除:

这是我的代码中的函数:

review.forEach(function (item, index, object) {
    if (item === '\u2022 \u2022 \u2022') {
       console.log('YippeeeE!!!!!!!!!!!!!!!!')
       object.splice(index, 1);
    }
    console.log('[' + item + ']');
});
Run Code Online (Sandbox Code Playgroud)

这是仍未删除数组的输出:

[Scott McNeil]
[reviewed 4 months ago]
[ Mitsubishi is AMAZING!!!]
YippeeeE!!!!!!!!!!!!!!!!
[• • •]
Run Code Online (Sandbox Code Playgroud)

所以很明显它会按照指示进入if语句,但显而易见的是[•••]仍然存在.

javascript foreach

80
推荐指数
3
解决办法
12万
查看次数

在javascript中将数组拼接成数组的更好方法

有没有比这更好的方法将数组拼接到javascript中的另一个数组中

var string = 'theArray.splice('+start+', '+number+',"'+newItemsArray.join('","')+'");';
eval(string);
Run Code Online (Sandbox Code Playgroud)

javascript arrays

62
推荐指数
4
解决办法
5万
查看次数

使用splice in for循环从数组中删除项目

我想实现一种jQuery实时搜索.但在将输入发送到服务器之前,我想删除数组中包含3个或更少字符的所有项目(因为在德语中,这些单词在搜索方面通常可以忽略)因此["this", "is", "a", "test"]变为["this", "test"]

$(document).ready(function() {
var timer, searchInput;
$('#searchFAQ').keyup(function() {
    clearTimeout(timer);
    timer = setTimeout(function() {
        searchInput = $('#searchFAQ').val().match(/\w+/g);
        if(searchInput) {
            for (var elem in searchInput) {
                if (searchInput[elem].length < 4) {
                    //remove those entries
                    searchInput.splice(elem, 1);
                }
            }
            $('#output').text(searchInput);
            //ajax call here
        }
    }, 500);
});
});
Run Code Online (Sandbox Code Playgroud)

现在我的问题是我的for循环中并没有删除所有项目.如果我例如典型的"这是一个测试""是"被删除,"a"停留. 的jsfiddle

我认为问题是for循环,因为如果我用splice删除一个项目,数组的索引会改变,所以它继续使用"错误"索引.

也许有人可以帮帮我吗?

javascript arrays jquery for-loop

50
推荐指数
3
解决办法
5万
查看次数

JS string.split()没有删除分隔符

如何在不删除分隔符的情况下拆分字符串?

假设我有一个字符串: var string = "abcdeabcde";

当我这样做时 var newstring = string.split("d"),我得到这样的东西:

["abc","eabc","e"]

但我想得到这个:

["abc","d","eabc","d","e"]

当我尝试做我的"split2"功能时,我把所有纠结在splice()和索引以及"this"vs"that"和...... aargh!救命!:d

javascript split delimiter

48
推荐指数
6
解决办法
4万
查看次数

扩展语法如何影响数组拼接

我找到了以下代码,我不知道A和B之间有什么区别:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
Run Code Online (Sandbox Code Playgroud)

一个

fruits.splice(2,0,["Lemon", "Kiwi"]);
Run Code Online (Sandbox Code Playgroud)

fruits.splice(...[2,0].concat(["Lemon", "Kiwi"]));
Run Code Online (Sandbox Code Playgroud)

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var A = fruits.splice(2, 0, ["Lemon", "Kiwi"]);
var B = fruits.splice(...[2, 0].concat(["Lemon", "Kiwi"]));

console.log(A)
console.log(B)
Run Code Online (Sandbox Code Playgroud)

javascript arrays spread-syntax

35
推荐指数
5
解决办法
2942
查看次数

无论大小如何,将阵列拼成两半?

我有一个阵列,我想分成两半.所以我可以将前半部分放在右侧,将后半部分放在左侧.

我之前使用过拼接功能:

var leftSide = arrayName.splice(0,2);
Run Code Online (Sandbox Code Playgroud)

但不确定无论大小如何将其拼接成一半,因为数组的大小会动态变化.

javascript arrays

34
推荐指数
6
解决办法
5万
查看次数

Javascript:'拼接'的算法性能是什么?

也就是说,如果我需要为单个数组插入调用这个函数,我是否更适合使用某种树或跳过列表数据结构?

javascript performance

29
推荐指数
2
解决办法
2万
查看次数

是否存在类似于Python的Easy String Splicing的Java?

好吧,我想知道的是有一种方法可以用Java来做Python下面可以做的事情......

string_sample = "hello world"

string_sample[:-1]
>>> "hello world"

string_sample[-1]
>>> "d"

string_sample[3]
>>> "l"
Run Code Online (Sandbox Code Playgroud)

因为在我看来,Java让你为同样的结果工作(我特别需要每次使用2个数字而缺少-1表示最后一个字符)

String string_sample = "hello world";

string_sample.substring(0,string_sample.length()-1);
>>> "hello world"

string_sample.substringstring_sample.length()];
>>> "d"

string_sample.(3,4);
>>> "l"
Run Code Online (Sandbox Code Playgroud)

我还没有在Java中使用数组/列表,所以我真的希望Java比这更容易

编辑:修改了'i'对于string_sample [3]的'l'.好好发现Maroun!

python java string

26
推荐指数
3
解决办法
5万
查看次数

关于JavaScript的切片和拼接方法的问题

我遇到了以下代码:

var f = function () {
    var args = Array.prototype.slice.call(arguments).splice(1);

    // some more code 
};
Run Code Online (Sandbox Code Playgroud)

基本上,结果args是一个数组,它是arguments没有第一个元素的副本.

但我不明白究竟是为什么farguments(其是保持该函数的输入参数成阵列状的对象的对象)对象被传递到slice方法,以及如何slice(1)被移除第一元件(定位在索引0) .

有人可以帮我解释一下吗?

PS代码来自此部分应用程序功能

javascript arrays arguments slice

23
推荐指数
1
解决办法
2万
查看次数

使用迭代器对std :: list进行排序

是否可以对迭代器定义的列表(列表的子集)的部分进行排序std::sort

即,std::list唯一可用的排序是通过一种方法(http://en.cppreference.com/w/cpp/container/list/sort),我希望能够使用它的迭代器对列表的一部分进行排序std::sort.例如

std::sort(listItrStart, listItrEnd, [](T& a, T& b){ return a.something() < b.something()});
Run Code Online (Sandbox Code Playgroud)

我感谢一旦对项目执行了移动操作,迭代器将变为无效,我认为这意味着在下一次"比较"之前,迭代器无法对列表进行排序而无需重新迭代到所需位置?

在这种情况下,排序子列表的最佳做法是什么,而不为此过程填充另一个容器(如果有的话)?

非常感谢.

c++ sorting iterator list

23
推荐指数
1
解决办法
1108
查看次数