我试图在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中的另一个数组中
var string = 'theArray.splice('+start+', '+number+',"'+newItemsArray.join('","')+'");';
eval(string);
Run Code Online (Sandbox Code Playgroud) 我想实现一种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删除一个项目,数组的索引会改变,所以它继续使用"错误"索引.
也许有人可以帮帮我吗?
如何在不删除分隔符的情况下拆分字符串?
假设我有一个字符串:
var string = "abcdeabcde";
当我这样做时
var newstring = string.split("d")
,我得到这样的东西:
["abc","eabc","e"]
但我想得到这个:
["abc","d","eabc","d","e"]
当我尝试做我的"split2"功能时,我把所有纠结在splice()和索引以及"this"vs"that"和...... aargh!救命!:d
我找到了以下代码,我不知道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)
我有一个阵列,我想分成两半.所以我可以将前半部分放在右侧,将后半部分放在左侧.
我之前使用过拼接功能:
var leftSide = arrayName.splice(0,2);
Run Code Online (Sandbox Code Playgroud)
但不确定无论大小如何将其拼接成一半,因为数组的大小会动态变化.
也就是说,如果我需要为单个数组插入调用这个函数,我是否更适合使用某种树或跳过列表数据结构?
好吧,我想知道的是有一种方法可以用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!
我遇到了以下代码:
var f = function () {
var args = Array.prototype.slice.call(arguments).splice(1);
// some more code
};
Run Code Online (Sandbox Code Playgroud)
基本上,结果args
是一个数组,它是arguments
没有第一个元素的副本.
但我不明白究竟是为什么f
的arguments
(其是保持该函数的输入参数成阵列状的对象的对象)对象被传递到slice
方法,以及如何slice(1)
被移除第一元件(定位在索引0) .
有人可以帮我解释一下吗?
PS代码来自此部分应用程序功能
是否可以对迭代器定义的列表(列表的子集)的部分进行排序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)
我感谢一旦对项目执行了移动操作,迭代器将变为无效,我认为这意味着在下一次"比较"之前,迭代器无法对列表进行排序而无需重新迭代到所需位置?
在这种情况下,排序子列表的最佳做法是什么,而不为此过程填充另一个容器(如果有的话)?
非常感谢.