将页面标题的第一个单词与 Javascript 中的数组进行比较
Compare the first word of a page title to an array in Javascript
以下代码获取页面标题,将其与数组中的数据进行比较并输出最终值
var title = (document.title);
//test variables
testarray =["blue","top","110","in stock", "red","down","111","in stock"]
//function
function testfunction(array, variable){
var varindex = array.indexOf(variable)
return array[varindex+2]
}
//calling the function
testfunction(testarray, title)
var finalvalue = testfunction(testarray, title);
因此,如果我的页面标题是蓝色,它会给我所需的值 110。
它工作正常,但以这种方式,我页面的唯一有效标题必须是 Blue,否则它将无法工作。
我希望能够有一个更长的页面标题,例如 Blue Shoes。我尝试在开头添加以下变量以仅获取标题第一个单词
var fulltitle = (document.title);
var title = fulltitle.split(' ').slice(0,1);
但它不起作用。我的代码有什么问题?
谢谢
我不确定我是否理解正确,但可能有一个问题。数组中的标题和值可以以大写或小写开头。尝试做这样的事情。
var title = (document.title);
//test variables
testarray =["blue","top","110","in stock", "red","down","111","in stock"]
//function
function testfunction(array, variable){
// CHANGES HERE
var varindex = array.indexOf(variable.toLocaleLowerCase())
return array[varindex+2]
}
//calling the function
testfunction(testarray, title)
var finalvalue = testfunction(testarray, title);
尝试var title = fulltitle.split(' ')[0]
。并将比较的部分放入同一个寄存器var varindex = array.indexOf(variable.toLowerCase())
.
这里有几个问题:
当 document.title
是 Blue Shoes 然后你做:
fulltitle.split(' ').slice(0,1)
它实际上 returns 一个类似于 ["Blue"]
的数组。您需要先将其转换为文本,例如:
var title = fulltitle.split(' ').slice(0,1)[0];
此外,返回的 title
值与 testarray
数组变量 ("Blue" !== "blue"
) 中的值不同,因此 indexOf
不起作用。您需要将标题设为小写,例如:
var varindex = array.indexOf(variable.toLowerCase())
工作演示:
var fulltitle = "Blue Shoes";
var arr = fulltitle.split(' ').slice(0, 1);
var title = arr && arr.length ? arr[0] : "";
//test variables
testarray = ["blue", "top", "110", "in stock", "red", "down", "111", "in stock"]
//function
function testfunction(array, variable) {
var varindex = array.indexOf(variable.toLowerCase())
return array[varindex + 2]
}
//calling the function
var finalvalue = testfunction(testarray, title);
console.log( finalvalue )
使用 findIndex()
和 startsWith()
var title = 'red title';
//test variables
testarray =["blue","top","110","in stock", "red","down","111","in stock"]
//function
function testfunction(array, variable){
var varindex = array.findIndex(e => variable.startsWith(e))
return array[varindex+2]
}
//calling the function
testfunction(testarray, title)
var finalvalue = testfunction(testarray, title);
console.log(finalvalue)
其成功的测试用例在数组中包含blue
、blueberry
、berry blue
等词。
只需用这个
替换你的测试函数
function testfunction(array, variable){
let indexCaptured = '';
array.forEach((res, index) => {
if(res.includes(variable)) {
indexCaptured = array[index+2]
}
});
return indexCaptured;
}
以下代码获取页面标题,将其与数组中的数据进行比较并输出最终值
var title = (document.title);
//test variables
testarray =["blue","top","110","in stock", "red","down","111","in stock"]
//function
function testfunction(array, variable){
var varindex = array.indexOf(variable)
return array[varindex+2]
}
//calling the function
testfunction(testarray, title)
var finalvalue = testfunction(testarray, title);
因此,如果我的页面标题是蓝色,它会给我所需的值 110。 它工作正常,但以这种方式,我页面的唯一有效标题必须是 Blue,否则它将无法工作。
我希望能够有一个更长的页面标题,例如 Blue Shoes。我尝试在开头添加以下变量以仅获取标题第一个单词
var fulltitle = (document.title);
var title = fulltitle.split(' ').slice(0,1);
但它不起作用。我的代码有什么问题? 谢谢
我不确定我是否理解正确,但可能有一个问题。数组中的标题和值可以以大写或小写开头。尝试做这样的事情。
var title = (document.title);
//test variables
testarray =["blue","top","110","in stock", "red","down","111","in stock"]
//function
function testfunction(array, variable){
// CHANGES HERE
var varindex = array.indexOf(variable.toLocaleLowerCase())
return array[varindex+2]
}
//calling the function
testfunction(testarray, title)
var finalvalue = testfunction(testarray, title);
尝试var title = fulltitle.split(' ')[0]
。并将比较的部分放入同一个寄存器var varindex = array.indexOf(variable.toLowerCase())
.
这里有几个问题:
当
document.title
是 Blue Shoes 然后你做:fulltitle.split(' ').slice(0,1)
它实际上 returns 一个类似于
["Blue"]
的数组。您需要先将其转换为文本,例如:var title = fulltitle.split(' ').slice(0,1)[0];
此外,返回的
title
值与testarray
数组变量 ("Blue" !== "blue"
) 中的值不同,因此indexOf
不起作用。您需要将标题设为小写,例如:var varindex = array.indexOf(variable.toLowerCase())
工作演示:
var fulltitle = "Blue Shoes";
var arr = fulltitle.split(' ').slice(0, 1);
var title = arr && arr.length ? arr[0] : "";
//test variables
testarray = ["blue", "top", "110", "in stock", "red", "down", "111", "in stock"]
//function
function testfunction(array, variable) {
var varindex = array.indexOf(variable.toLowerCase())
return array[varindex + 2]
}
//calling the function
var finalvalue = testfunction(testarray, title);
console.log( finalvalue )
使用 findIndex()
和 startsWith()
var title = 'red title';
//test variables
testarray =["blue","top","110","in stock", "red","down","111","in stock"]
//function
function testfunction(array, variable){
var varindex = array.findIndex(e => variable.startsWith(e))
return array[varindex+2]
}
//calling the function
testfunction(testarray, title)
var finalvalue = testfunction(testarray, title);
console.log(finalvalue)
其成功的测试用例在数组中包含blue
、blueberry
、berry blue
等词。
只需用这个
function testfunction(array, variable){
let indexCaptured = '';
array.forEach((res, index) => {
if(res.includes(variable)) {
indexCaptured = array[index+2]
}
});
return indexCaptured;
}