我有三个包含逗号分隔数字的字符串。
var str1 = "1,5,3";
var str2 = "2,5,1";
var str3 = "3,2,1,5";
我想相互检查这三个字符串(以获取所有字符串之间的共同元素)
预期输出
var result = 1,5;
如果我只有两个字符串,这是我已经用过的逻辑
var array = str2.split(',');
for(var item in array) {
var contains = (str1.indexOf(array[item]) > -1);
if(contains == 1) {
var result = array[item]+',';
getele2 += result;
geteleresult = getele2.replace(/\,$/, '');
}
}
alert(geteleresult);
但是当检查多个字符串时,我不知道如何为这些字符串应用排序逻辑。任何想法然后请帮助 谢谢...
最佳答案
你可以试试这个函数和逻辑:
function findCommon() {
var nums = {};
var args_length = arguments.length;
for (var i = 0; i < args_length; i++) {
var cur_arg = arguments[i];
var cur_found = {};
var cur_arg_split = cur_arg.split(",");
for (var j = 0; j < cur_arg_split.length; j++) {
var cur_val = cur_arg_split[j];
if (!(cur_val in cur_found)) {
cur_found[cur_val] = 1;
if (!(cur_val in nums)) {
nums[cur_val] = 0;
}
nums[cur_val]++;
}
}
}
var ret = [];
for (var key in nums) {
if (nums[key] === args_length) {
ret.push(key);
}
}
return ret;
}
演示: http://jsfiddle.net/LkEyj/1/
它允许您将任意数量的变量(包含逗号分隔数字的字符串)传递给函数。
关于javascript - 使用javascript检查多个字符串是否相互包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16454424/