- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个页面,我在其中接收如下查询字符串值:
?Target=Customers&Sector=Private
它也可能采用与小写字母相同的值,具体取决于用户。
我的页面上有以下对象:
var settings = {
Target = { T1: "Customer", T2: "Partner", T3 : "Other" },
Sector = { S1 : "Private", S2 : "Public", S3 : "Other" }
}
我需要获取查询字符串,并获取 T1 、 T2 、 S1 等属性名称,因为我想将它们发送到其他地方。
我的代码如下所示:
//Here I am converting all the main settings properties to small letters, in csae the user passes "customer"
var settingskey, keys = Object.keys(settings);
var n = keys.length;
var newSettings = {};
while(n--){
settingskey = keys[n];
newSettings[settingskey.toLowerCase()] = settings[settingskey];
}
//Now I have my new object
var resultArray = ""; // This is the final array where I will fill the values like T1 S1
//get query string
var url = window.location.search;
//get rid of ? character
url = url.substring(1);
//separate each key, value pairs
var keyvalueArray = url.split('&');
//loop through all key value pairs
keyvalueArray.forEach(function(keyvalue){
//get key, ex: Target
var key = keyvalue.split('=')[0];
//get value, ex: Customer
var val = keyvalue.split('=')[1];
console.log(key);
console.log(val);
for(p in newSettings){
if(p == key.toLowerCase())
{
var element = {};
element = newSettings[key.toLowerCase()];
var elementValue, elementValues = Object.values(element);
var newElement = {};
var n = elementValues.length;
newElement.keys = element.keys;
while(n--){
elementValue = elementValues[n];
newElement[n] = elementValue.toLowerCase();
}
for(var prop in newElement){
if(element[prop] == val){
classArray+= "." + prop + ", ";
}
}
break;
}
}
});
resultArray = resultArray.substring(0, resultArray.lastIndexOf(',')).trim();
基本上,我是第一次获取属性名称,例如 Target 和 sector,并将它们转换为小写字母,然后创建一个新对象。然后我“尝试”为每个具有新“值(value)”的对象创建一个新对象,所以我想要客户而不是客户。
是否有一种简单有效的方法来比较查询字符串与小写字母的嵌套文字对象值/键?如果我有其他 3-4 个嵌套级别怎么办,这意味着更多的嵌套循环。
我想什么时候通过 ?target=customer§or=private
以字符串形式返回:“T1 S1”
如果我通过:?Target=cuSTomer§or=oThEr
以字符串形式返回:“T1 S3”
有什么想法吗?
最佳答案
您可以在设置的最深层交换键/值,以便在给定“目标”和“客户”时可以直接找到“T1”。所以交换的设置对象看起来像:
var settings = {
target: { customer: "T1", partner: "T2", other: "T3" },
sector: { private: "S1", public: "S2", other: "S3" }
}
这是一个进行这种交换的函数,然后返回一个翻译数组,您可以将其转换为以空格分隔的字符串:
function getCodes(url, settings) {
var swapped = Object.keys(settings).reduce( function (obj, key) {
obj[key.toLowerCase()] = Object.keys(settings[key]).reduce ( function (obj2, key2) {
obj2[settings[key][key2].toLowerCase()] = key2;
return obj2;
}, {} );
return obj;
}, {} );
return url.toLowerCase().split(/[?&#]/).slice(1).map( function (arg) {
var parts = arg.split('=');
return swapped[parts[0].toLowerCase()][parts[1].toLowerCase()];
} );
}
var url= 'http://www.example.com?Target=Customer&Sector=Private';
var settings = {
Target: { T1: "Customer", T2: "Partner", T3 : "Other" },
Sector: { S1 : "Private", S2 : "Public", S3 : "Other" }
}
var result = getCodes(url, settings).join(' ');
console.log(result);
关于javascript - 嵌套文字对象并按小写过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40984341/
我想在 Perl 中用另一个替换一个字符串;两者长度相同。我想替换所有出现的字符串(不区分大小写),但我希望保留字母的大小写。所以如果第一个字母是大写的,替换后的第一个字母也将是大写的。 例如,如果我
如何更改以下 .htaccess 文件片段以实现: 现在如果它重写,它需要用户从: domain.com/TEST - domain.com/test domain.com/subdir/TEST -
我想将'abcdef'转换为'aBCdeF'或'AbCDEF'或任何其他大小写字符的随机组合。我需要将其与任何给定的字符串一起使用。我知道String的#upcase,#swapcase,#capit
我正在检查对象是否与默认值匹配,但我不关心大小写差异。 当前功能: function checkSingleDifference(property) { if ($scope.defaults
我有一个 python 字典,如下所示 my_dict = {u'customer': [u'GS808E', u'GS810EMX'], u'tablets': [u'Apple IPAD PRO'
如果我在 Testcafe 脚本中使用函数“WithText”,看起来它取决于小写和大写书写。我怎样才能让它独立?所以接受用户“我的名字”和“我的名字”?如果出现翻译问题,脚本将失败是很糟糕的。 最佳
我有一个 HTML 文本元素,例如:一个名为 VIDEOS 的 H1 标签。有什么办法可以用JS随机操作文字的大小写吗?因此,例如,在一个实例中,它将文本加载为 viDEoS,在另一个实例中,它加载了
我需要创建一个函数来读取字符串输入并将字符串中的奇数索引字符转换为大写,偶数索引字符转换为小写。 function alternativeCase(string){ for(var i = 0
代码如下: def upper_every_nth (s, n): i = 0 while len (s) > (i * (0 + n)) : character =
有点奇怪的要求,我知道。但是我一直在寻找解决这个问题的方法已经有一段时间了。这是我正在寻找的效果: var myString = "Hello I am randomly capitalized" 期
所以,我想做的是创建一个将大写字符切换为小写字符的函数,反之亦然。 这是我正在使用的: #include #include int caplowswitch(char string[], char
我有一个 json 文件,我正在寻找一个值的小写部分 - 我可以 jq 值和小写字符串,但我如何确保这个新的小写值被添加回整个文件? jq '.[].Id' file.json | awk '{pri
有没有办法在 Racket 中将字符串中的所有字符都变成小写? 我能想到的唯一方法是将字符转为小写,但它不适用于字符串 我使用的是初学者语言,所以我无法使用某些功能 最佳答案 在实践中,你会使用 st
我需要将相同的变量转换为大写|小写|大写。 /** * @package ${1 default="Hello"} * @subpackage ${com}_${1 capitalize
现场电子邮件: 可以在 Nativescript 上的 RadDataForm 中设置 autocapitalizationType="none"吗? 最佳答案 截至今
我在Scala中发现了一个很奇怪的问题。我试图获取上个月的最后一天。下面的工作表显示了正确的结果(在 Scala 中,月份从 0(一月)开始,所以三月是 2)。 但是,如果我注释掉左边最后一行,结果如
我有关于在 JTextField 中输入的问题。我的程序搜索几个 csv 文件并查找 JTextField 字符串中指定的内容。我已添加 readLine 函数“.toLowerCase”以将所有字符
通过使用一个输入文本框,输入类型只允许字母。输入的值为'a',它应该在文本框外显示为'A'? 如果我们在输入文本中输入小写字母“a”,那么它会希望在框外显示大写字母“A”...以下是我的html代码:
我正在开发一个特殊的脚本来修复文本区域内的字母。我在堆叠时发现了一个问题。在 Stackoverflow 上,我找不到解决方案,需要帮助。 我的脚本有一个系统,用于识别每个以大写首字母开头的单词,以及
我有两个文本字段:1 个文本字段值来自使用 ahax 的数据库: $("#p_plus_h").val(moment().add('days', prod.p_plus).format("DD MMM
我是一名优秀的程序员,十分优秀!