我正在设置一个测试,以确保使用JavaScript在页面元素内正确显示多面Solr查询“内容”。
我将Solr查询结果命名为“ ryanlinkstransmissionpage”;
{变速器:['Manual',12104,'Automatic',9858]
我想做的是仅提取“手动”和“自动”,因此我可以测试这些值是否显示在页面上。
但是,更多的相关功能使我无法理解,因为我将在其他Solr查询结果上使用此方法。
为了使事情复杂化,此Solr查询结果“ ryanlinkstransmissionpage”来自动态的“实时” Solr,因此每次运行时值可能都会更改(因此,在数组上进行测试时,此数组中可能会有更多或更少的值)例如第二天)。
我尝试了一些javascript命令,但无济于事。
JSON.parse(ryanlinkstransmissionpage)
JSON.stringify(ryanlinkstransmissionpage)
Object.values(ryanlinkstransmissionpage)
任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
如果可能,我会建议将transmission
字段更改为对象,而不是数组。这将使您拥有更大的读取其中数据的能力。
忽略这一点,您是否要提取string
值和它们后面的number
值?即。 “手册”和“ 12104”?还是只是在试图断言页面上是否存在字符串值?
无论哪种方式,这里有两种可能的方法。
const ryanlinkstransmissionpage = { Transmission: [ 'Manual', 12104, 'Automatic', 9858 ] };
// Pull out the string values
const strngVals = ryanlinkstransmissionpage.Transmission.filter(val => typeof val === 'string');
// Pull out the string values and the numbers that follow
const strngNumVals = ryanlinkstransmissionpage.Transmission.reduce((keyVals, val, idx, srcArr) => {
if (typeof val === 'string') keyVals[val] = srcArr[idx + 1];
return keyVals;
}, {});
对于您引用的此Solr查询结果提供的数据更改,
答案 1 :(得分:-1)
JavaScript有一个内置的方法Array.prototype.find(() =>)
。如果您只想检查此值是否存在以确保其在页面上,则可以执行以下操作:
const ryanlinkstransmissionpage = { Transmission: [ 'Manual', 12104, 'Automatic', 9858 ] };
const manual = ryanlinkstransmissionpage.Transmission.find((ele) => ele === 'Manual'); // returns 'Manual'
const automatic = ryanlinkstransmissionpage.Transmission.find((ele) => ele === 'Automatic'); // returns 'Automatic'
console.log(automatic);
console.log(manual);
// or
const findInArray = (arr, toFind) => {
const result = arr.find((ele) => ele === toFind);
return !!result;
}
console.log(findInArray(ryanlinkstransmissionpage.Transmission, 'Automatic')); // true
console.log(findInArray(ryanlinkstransmissionpage.Transmission, 'HelloWorld')); // false
console.log(findInArray(ryanlinkstransmissionpage.Transmission, 'Manual')); // true