[英]Delete elements of array that end with certain strings in JavaScript
[英]access elements in array of strings that contain certain strings
我有一个看起来像这样的数组: ["whatWP", "isVBZ", "theDT", "temperatureNN", "inIN", "bostonNN"]
我想访问包含IN的元素(如果存在)以及下一个元素,直到到达并包含一个带有NN的元素。 并将这些元素组合成一个字符串。
当我尝试像这样访问包含IN的元素时,我得到-1表示没有包含IN的元素。
这是我尝试执行的操作:
strARR = ["whatWP", "isVBZ", "theDT", "temperatureNN", "inIN", "bostonNN"];
strARR[strARR.indexOf('IN')];
但后来我变得不确定,因为-1处不存在。
如果此字符串数组的元素包含IN以及匹配包含NN的元素(包括该元素)之后的每个元素,如何访问该字符串数组的元素? 并将它们作为字符串连接?
您需要一个for循环:
var strARR = ["whatWP", "isVBZ", "theDT", "temperatureNN", "inIN", "bostonNN"];
var foundStr = null;
for (var i = 0, cString; i < strARR.length; ++i) {
cString = strARR[i];
if (cString.indexOf("IN") !== -1) {
foundStr = cString;
break;
}
}
if (foundStr !== null) {
/* do someting with found string */
}
strARR[strARR.indexOf('IN')]
返回一个奇怪的值,因为:
strARR.indexOf('IN') // returns -1 (no string "IN" in the array)
strArr[-1] // undefined
您需要分别评估数组中的每个元素,而不是整体评估数组。 分别使用jQuery,您可以执行以下操作:
var containsIN = '';
$.each(strARR, function(){
if($(this).indexOf('IN') !== -1){
containsIN = $(this);
}
});
要在找到包含“ NN”的字符串之前实现附加或连接字符串,您需要将原始if
条件修改为:
if(containsIN === '' && $(this).indexOf('IN') !== -1)
然后再添加另一个条件
if(containsIN !== ''){
final += $(this);
}
然后,终止每个:
if($(this).indexOf('NN') !== -1){
return false;
}
因此,最终代码应如下所示:
var containsIN = '';
var final = '';
$.each(strARR, function(){
if(containsIN === '' && $(this).indexOf('IN') !== -1){
containsIN = $(this);
}
if(containsIN !== ''){
final += $(this);
}
if($(this).indexOf('NN') !== -1){
return false;
}
});
该数组中没有“ IN”元素。 只是一个“ inIN”元素,并不完全相等。 (请记住,这可能是任何东西的数组,而不仅仅是字符串,因此不假定它们可以检查字符串内容)
您必须使用标准的for(var i = 0; i < strARR.length; i++)
循环for(var i = 0; i < strARR.length; i++)
。 i
变量将帮助您找到正确的索引。 然后,为了合并结果,请使用Array.splice
和Array.join
方法。 Splice可以将开始索引和项目的长度作为参数,而Join可以将中间字符作为参数(例如逗号)放在两者之间。
您可以为此使用Array的filter()函数。 如果您需要定位本机不支持filter()
浏览器,则链接页面上有可用的polyfill。
您可以创建自己喜欢的任何过滤条件,并且filter()
将返回与您的条件匹配的数组元素。
var strARR = ["whatWP", "isVBZ", "theDT", "temperatureNN", "inIN", "bostonNN"];
var strARRFiltered = strARR.filter(function(element){
return element.indexOf("IN") !== -1;
});
alert(strARRFiltered);
要执行您当前要执行的操作,代码将需要像这样:
strARR = ["whatWP", "isVBZ", "theDT", "temperatureNN", "inIN", "bostonNN"];
strARR[strARR.indexOf('inIN')];
您需要遍历调用indexOf的数组中的每个元素,而不是尝试将其作为数组访问。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.