gpt4 book ai didi

javascript - 数组/对象作为索引

转载 作者:行者123 更新时间:2023-11-29 14:55:37 24 4
gpt4 key购买 nike

在 jQuery ajax 请求中,我有回调发生的错误处理:

success: function(a) {
if (a.error) switch (a.error) {
case "formError":
case "clientError":
case "limitError":
doErrorCorrection();
alert("Client-sided error: " + a.errorMessage);
break;
case "serverError":
case "500Error":
doRollback();
doTransactions();
break;
case "generalError":
alert("One plus one is: " + (1+1));
} else doActionsWith(a)
}

我想将其移动到它自己的对象中,例如:

var errors = {
...
formError: function() {...},
generalError: function() {...},
...
};

有了这个,我可以说:

success: function(a) {
if (a.error) return errors[a.error](a.errorMessage);
doActionsWith(a)
}

问题是我有大量来自 switch 的回流,如果我要将其转换为一个对象,那将意味着一遍又一遍地重复相同的函数。

var errors = {
formError: function() { methodA() },
clientError: function() { methodA() },
limitError: function() { methodA() },
...
//more if I had more reflows
};

所以我想到了一个数组/列表作为索引。我乱七八糟地设置了一个索引:

var arr = {
test: 'hello world'
};

var index = ['a', 'b', 'c'];

arr[index] = 'array as index';

它起作用了,但只是部分起作用。当我运行这些键时,它们以字符串形式返回:

for (var key in arr) console.log(key)
//test
//a,b,c

用一个对象运行相同的测试,index = {'a' = true} 只设置字符串索引 object Objectarray as index.

好吧,作为索引的数组/对象是行不通的,我应该如何将我的 switch 重组为一个对象?

最佳答案

你可以像这样维护一个对象数组:

var arr = [{ 
msg: 'Hello World',
val: ['a', 'b', 'c']
}, {
msg: 'This is a dummy text.',
val: ['d', 'e', 'f']
}];

// now perform your search
for (var obj in arr) {
var idx = arr[obj].val.indexOf('a');
if (idx !== -1) { // if val is found
alert(arr[obj].msg); // alerts "Hello World"
}
}

关于javascript - 数组/对象作为索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18439454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com