【问题标题】:When String Contains Elements From Arrays In Order当字符串按顺序包含数组中的元素时
【发布时间】:2018-08-20 01:09:26
【问题描述】:

当变量“message”按顺序包含每个数组中的一个元素时,如何使控制台打印为真:“greetings”然后是“colour”然后是“names”,但是在“greetings”之前和“color”之后的任何单词仍然打印真实。

如果元素乱序,它应该打印 false。

如果元素之间有单词,它应该打印为 false。

查看当前代码下方的示例。

当前代码:

var message = '';
var greetings = 'hi' || 'hello' || 'hey';
var colour = 'red' || 'green' || 'blue';
var names = 'john' || 'evan' || 'etienne';

if (message.includes(greetings + ' ' + colour + ' ' + names)) {
  console.log(true);
} else {
  console.log(false);
}

消息时应打印的示例:

message = 'hi green evan' //true
message = 'lol hey blue john' //true
message = 'hello green etienne! xD' //true
message = 'evan green hi' //false because wrong element order
message = 'hi very green evan' //false because word in-between elements

【问题讨论】:

  • 如何将这些问候语、颜色和名称转换为数组?您可以检查字符串中一个的索引,如果它的索引为 0,则从字符串中截断它们,然后继续其余的
  • 你知道如何通过传递示例来做到这一点吗?如果你能回答我将不胜感激
  • 我用正则表达式写了一个简单的,没有使用循环和截断,它应该缩短评估

标签: arrays node.js if-statement include var


【解决方案1】:

您可以为此使用正则表达式。

var message = "hello green etienne! xD";
var greetings = ["hi", "hello", "hey"].join("|");
var colors = ["red", "green", "blue"].join("|");
var names = ["john", "evan",  "etienne"].join("|");
var reg = new RegExp("^.*(" + greetings + ")\\s+.*(" + colors + ")\\s+(" + names + ").*$");
console.log(reg.test(message));

【讨论】:

  • 谢谢君回来,它通过了所有的例子!
【解决方案2】:

var message = 'hi green evan';
var greetings = ["hi","hello","hey"];
var colour = ['red','green','blue'];
var names = ['john','evan','etienne'];
var contained = false;
greetings.some(x =>{
  	colour.some(z=>{
    	names.some(e=>{
        if(message.includes(x + ' ' + z + ' ' + e)){
        	contained = true;
					alert(true);
        }
      });
    });
});

if(!contained)
	alert(false);

你可以这样做。可能不是最好的方法,而是我想到的第一件事

【讨论】:

  • 感谢 Garret 的回答!它有效,如果我有 15 名声望,我会投赞成票。我不得不接受 Jun Bach 的回答,因为我认为它更有效,但感谢您的时间和精力。
  • Np,只是给出了其他人没有的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-03
  • 2013-10-04
  • 2014-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多