如何检查另一个字符串中是否存在可变长度数组中的任何字符串?

时间:2019-06-07 15:20:10

标签: javascript arrays

我正在尝试根据var query = "SELECT NVL(MAX(" + column + ") + 1, 1) AS " + column + " FROM " + table + " WHERE " + sequenceIdField + " = '" + sequenceId + "'"; string1string1,string2等形式的输入来过滤JSON文件中的数组中的某些数据,即一些字符串以string1,string2,string3分隔。

我要做什么:

,

如果let arrInput = document.getElementById('inputBox').val.split(','); for(let i = 0; i < arrToFilter.length; i++){ if(.........what to write here?...........){ arrOutput.push(arrToFilter[i]); } } return arrOutput; 的长度是固定的,我可以对arrInput中的每个元素使用indexOf != -1来完成此操作,但是在这里,由于arrInput的长度是可变的,如何检查arrInput中存在的至少一个字符串是否也作为arrInput中的子字符串存在?

编辑:

示例:

arrToFIlter[i]arrToFilter

案例1:

说(在["abcqwer", "pizza", "definition", "abcdef", "example"]元素中输入的输入是<input>

为此,abc,def应该为arrOutput

案例2:

假设输入的是["abcqwer", "definition", "abcdef"]

预期输出:abc

2 个答案:

答案 0 :(得分:1)

简单的方法是使用一些和过滤器,

var string = 'ad,kk,sb';
var array = ['adik', 'klop', 'pp'];

var stringers = string.split(',');
var result = array.filter((arr) => {
    var isPresent = stringers.some(stringer => arr.includes(stringer));
    return isPresent ? true : false;
});

console.log(result);

答案 1 :(得分:1)

您需要迭代两个数组

let arrToFilter = ['abcqwer', 'pizza', 'definition', 'abcdef', 'example'];
let arrOutput = [];
let arrInput = document.getElementById('inputBox').value.split(',');

arrToFilter.forEach(filter => {
  arrInput.forEach(input => {
    if (!!input && filter.includes(input)) {
      arrOutput.push(filter);
    }
  });
});
//                      distinct the output
return arrOutput.filter((v, i, a) => i === a.indexOf(v));