gpt4 book ai didi

javascript - 将切片扩展到包含字符串 'NN' 的数组中的第一个元素

转载 作者:行者123 更新时间:2023-11-28 08:10:10 25 4
gpt4 key购买 nike

我有这段代码,它从起始值(计算为包含 IN 的第一个单词)获取数组的拼接,然后到结束值(计算为包含 NN 的最后一个单词)。

如果数组中有一个包含 NN 的单词,然后是包含 IN 的单词,如何才能将起始值设为包含 NN 的第一个单词。那么最终值将如常,即 NN 的最后一个实例。

var first = theTopic.split(' ').reduce(function(p, c, i){
return p != -1 ? p : c.indexOf('IN') != -1 ? i : -1;
}, -1);
var last = theTopic.split(' ').reduce(function(p, c, i, a){
return c.indexOf('NN') != -1 ? i : p;
}, -1);
if(theTopic.indexOf('IN') > -1){
lastLocation = (theTopic.split(' ').slice(first, last + 1)).join(' ').replace(/,|\(.*?\)/g, ''));
}

目前,如果数组如下所示:["PB", "IN", "NN"],则 lastLocation 设置为 ["IN", "NN"]。目前,如果数组如下所示:["LL", "XC", "NN", "IN", "NN"],lastLocation 将设置为 ["IN", "NN"].

我想要的是,如果有一个“NN”后跟“IN”,例如[“LL”,“XC”,“NN”,“IN”,“NN”],然后将 lastLocation 设置为 ["NN", "IN", "NN"];

最佳答案

您已经完成了大部分工作 -

一旦找到第一个“IN”,只需返回并查看它之前是否有“NN” - 如果有更新“第一个”以指向它。

但是您不需要所有这些复杂的归约代码 - 您可以使用数组 indexOf 作为第一个,使用 lastIndexOf 作为最后一个。

试试这个:

var theTopic = "LL XC NN IN NN";
var tokens = theTopic.split(' ');
var last_index = tokens.lastIndexOf('NN'); // the last NN
var in_index = tokens.indexOf('IN'); // the IN
var first_index = tokens.lastIndexOf('NN', in_index); // search for last 'NN' before last 'IN'
var result = tokens.slice(first_index, last_index+1).join(' ')

编辑:IE8及以下版本不支持lastIndexOf - 如果您想要IE7-IE8支持,您可以在列表切片代码运行之前添加此polyfill代码一次:

[].lastIndexOf || (Array.prototype.lastIndexOf = function(a,b){for(++b>0?0:b=this.length+~~b;~--b&&(!(b in this)||this[b]!==a););return b}

关于javascript - 将切片扩展到包含字符串 'NN' 的数组中的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24316058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com