按字符串索引的 Javascript 数组
Javascript array indexed by string
我有以下JavaScript函数,我想为我的Web应用程序进行优化。
function DisplayToolTip(str) {
switch (str) {
case "a":
this.tooltip(xvalue,yvalue,text);
break;
case "b":
this.tooltip(xvalue,yvalue,text);
break;
case "c":
this.tooltip(xvalue,yvalue,text);
break;
default: break;
}
}
switch 语句可能会更改,即 json 可能需要添加大小写"d",但该函数存在,因此不知道如何更新上述内容。
通常在 c# 中,我会使用字典,所以键将是"a",值将是具有属性 xvalue,yvalue,text 的对象,或者值将是字符串"this.tooltip(xvalue,yvalue,text);"。这样我就可以更新字典,无论有多少元素,"显示工具提示"的执行速度都相对相同。
如何在 javascript 中使用字符串值创建索引或快速找到的对象数组?
JavaScript 中的对象就像字典。
var dictionary = {
a : ["xvalue","yvalue","text1"],
b : ["xvalue","yvalue","text2"]
}
console.log(dictionary["b"][2]); // will give you text2.
演示
编辑:更新了答案以包含数组(因为这就是问题所在)。
您可以使用
switch
语句本身,并带有fallthrough:
switch (str) {
case "a": case "b": case "c":
this.tooltip(xvalue,yvalue,text);
break;
default: break;
}
(但是,正如澳航评论的那样,这里没有必要default
案例。
或者,如果浏览器支持它,您可以使用数组的indexOf
方法:
if (["a", "b", "c"].indexOf(str)) ...
我会做这样的事情:
var tooltipSettings={
a: {xvalue: 1, yvalue: 1, text: 'string a'},
b: {xvalue: 2, yvalue: 2, text: 'string b'},
c: {xvalue: 3, yvalue: 3, text: 'string c'}
};
function DisplayToolTip(str) {
if(tooltipSettings[str])
{
var settings=tooltipSettings[str];
this.tooltip(settings.xvalue, settings.yvalue, settings.text);
}
}
你可以
使用字典,女巫基本上是一个普通的对象。Javascript 允许您通过字符串访问对象属性,就像访问如下所示的数组属性一样:
var obj = {
test: 'text',
b: 4
}
console.log(obj['test'], obj.test);
console.log(obj['b'], obj.b);
所以你的代码看起来像这样:
var pairs = {
'a': {
xvalue: 1,
yvalue: 1,
text: '1111'
},
'b': {
xvalue: 2,
yvalue: 2,
text: '2222'
}
};
function DisplayToolTip(str) {
var prop = pairs[str];
if (typeof prop !== 'undefined')
return this.tooltip(prop.xvalue, prop.yvalue, prop.text);
throw 'undefined prop ' + str;
}
相关文章:
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 将Javascript数组发送到控制器ASP.NET MVC
- JavaScript数组包含一个值
- 将JavaScript数组传递给函数
- javascript:数组循环
- 将数据存储在javascript数组中以供进一步使用
- 在Javascript数组中查找绝对最大值
- JavaScript数组优化以提高性能
- 在javascript数组中分散数字
- 如何发送分配列表<字符串>到JavaScript数组或可枚举对象
- Javascript数组动态
- javascript数组元素是否知道其封闭数组
- 将 JSON 数组解析为 JavaScript 数组
- 将Transform和Instance Variable转换为对象的JavaScript数组
- 使用Web Html表单创建Javascript数组
- 从重复的javascript数组结果集中只获取一行
- 如何为Javascript数组()的使用准备PHP变量
- Javascript数组和函数
- 为DataTables aoColumnDefs创建JavaScript数组(JSON格式)