Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中对照多个数组检查输入字_Javascript_Jquery_Arrays_Ajax - Fatal编程技术网

如何在Javascript中对照多个数组检查输入字

如何在Javascript中对照多个数组检查输入字,javascript,jquery,arrays,ajax,Javascript,Jquery,Arrays,Ajax,我需要针对3个对象测试输入中输入的所有单词,并确定它们属于哪个数组,以便将URL输出到API。 我想用Javascript/jQuery实现这一点 例如,如果输入有以下单词:keyword1keyword2keyword3keyword5 所有关键字条目都将从自动完成插件中添加 然后我需要针对3个阵列测试它们 var array1 = ["keyword2", "keyword6"]; var array2 = ["keyword3", "keyword4"]; var array3 = ["k

我需要针对3个对象测试输入中输入的所有单词,并确定它们属于哪个数组,以便将URL输出到API。 我想用Javascript/jQuery实现这一点

例如,如果输入有以下单词:
keyword1
keyword2
keyword3
keyword5

所有关键字条目都将从自动完成插件中添加

然后我需要针对3个阵列测试它们

var array1 = ["keyword2", "keyword6"];
var array2 = ["keyword3", "keyword4"];
var array3 = ["keyword1", "keyword5"];
我需要确定它们来自哪个数组,以便输出URL并将值添加到URL中的特定键

例如:

domain.com/api?array1=[插入关键字]&array2=[插入关键字]&array3=[插入关键字]

关键字需要作为数组发送,并且必须用破折号替换空格


我使用jQuery执行GET请求,生成URL。

您可以将所有数组对象放入父数组,然后循环它

var parentArray = [
    ["keyword2", "keyword6"],
    ["keyword3", "keyword4"],
    ["keyword1", "keyword5"]
]

$.each(parentArray,function(key,value){
    //here you can check
    $.each(value,function(key1,value1){
            if('your key word') ==  value1{
              // then the array you are looking for would be "key" of that particular loop
            }
    });


}); 

编辑:现在,这肯定会起作用

您可以通过创建数组数组来缩短代码,但这是可行的

var input=“关键字1关键字2关键字3关键字5”。拆分(“”);
var array1=[“关键字2”、“关键字6”];
var array2=[“关键字3”,“关键字4”];
var array3=[“关键字1”、“关键字5”];
变量arr1=[]、arr2=[]、arr3=[];
$.each(输入,函数(\ux,关键字){
if($.inArray(关键字,array1)!=-1)arr1.push(关键字);
if($.inArray(关键字,array2)!=-1)arr2.push(关键字);
if($.inArray(关键字,数组3)!=-1)arr3.push(关键字);
});
var url=“domain.com/api/?”,关键字=”;
如果(arr1.length>0)关键字+=”&array1=“+arr1.join(,”);
如果(arr2.length>0)关键字+=“&array2=“+arr2.join(,”);
如果(arr3.length>0)关键字+=”&array3=“+arr3.join(,”);
如果(keywords.length>0)url+=keywords.substring(1).replace(//g,“-”);
console.log(url)

这是一个普通的JS版本:

var words = 'keyword1 keyword2 keyword3 keyword5';

// first create an object that contains your arrays
var dict = {
    array1: ["keyword2", "keyword6"],
    array2: ["keyword3", "keyword4"],
    array3: ["keyword1", "keyword5"]
}

// start building up a new object that mirrors the existing one
// but that only contains those keywords that are in the input string
function buildURLObj(dict, words) {
    var out = {};

    // split the keywords string into an array
    words = words.split(' ');

    // loop over the object
    for (var p in dict) {
        out[p] = [];

        // loop over the array of keywords
        for (var i = 0, l = words.length; i < l; i++) {

            // if the keyword in the array, push it to the
            // temporary object
            if (dict[p].indexOf(words[i]) > -1) {
                out[p].push(words[i]);
            }
        }
    }

    // return the completed URL using createURL
    return createURL(out);
}

// create a URL from the new object
function createURL(arr) {
    var url = [];
    for (var p in arr) {

        // if the array is not empty, don't add it to the completed URL
        // otherwise start building up the URL string
        if [arr[p].length) {
            var subURL = [];
            subURL.push(p);
            subURL.push('[' + arr[p].join('-') + ']');
            url.push(subURL.join('='));
        }
    }

    // return the completed URL
    return url.join('&');
}

// "array1=[keyword2]&array2=[keyword3]&array3=[keyword1-keyword5]"
buildURL(dict, words);
var words='keyword1关键字2关键字3关键字5';
//首先创建一个包含数组的对象
变量dict={
数组1:[“关键字2”、“关键字6”],
数组2:[“关键字3”、“关键字4”],
数组3:[“关键字1”、“关键字5”]
}
//开始构建镜像现有对象的新对象
//但它只包含输入字符串中的那些关键字
函数buildURLObj(dict,words){
var out={};
//将关键字字符串拆分为数组
单词=单词。拆分(“”);
//在对象上循环
for(dict中的var p){
out[p]=[];
//在关键字数组上循环
for(var i=0,l=words.length;i-1){
out[p].推(字[i]);
}
}
}
//使用createURL返回完成的URL
返回createURL(out);
}
//从新对象创建URL
函数createURL(arr){
var url=[];
对于(arr中的var p){
//如果数组不是空的,请不要将其添加到已完成的URL中
//否则,开始构建URL字符串
if[arr[p].长度){
var subURL=[];
推送(p);
push('['+arr[p].join('-'+']');
push(subURL.join('=');
}
}
//返回完成的URL
返回url.join('&');
}
//“array1=[keyword2]&array2=[keyword3]&array3=[keyword1-keyword5]”
buildURL(dict,words);

是的……我的错,我忘了添加变量……现在检查一下,我已经编辑了它为什么被否决了?这是一个聪明的解决方案。除了你的意思是
var parentArray=[array1,array2,array3]
现在拼写错误已经纠正,这很聪明:)从parentArray中删除最后一个逗号,您就可以good@JeremyThille:thnx建议您缺少URL中的键-array1=…&array2=…这是一个更复杂的部分。请看这里:对不起,我还没有测试它,我只是说它看起来有多容易。我ave现在已经实现了它,并且可以正常工作。感谢您的帮助。