如何在Javascript中对照多个数组检查输入字
我需要针对3个对象测试输入中输入的所有单词,并确定它们属于哪个数组,以便将URL输出到API。 我想用Javascript/jQuery实现这一点 例如,如果输入有以下单词:如何在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
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现在已经实现了它,并且可以正常工作。感谢您的帮助。