我希望这些代码可以更简洁,但我不知道该怎么做。
函数2〜4具有相同的模式,希望可以减少代码,
如果我的“或”和“与”过多,是否有任何方法可以使其更清洁?
const statusFilter2 = (data1, data2) => {
if (data1 === 'error' || data2 === 'error') {
return 'error'
} else if (data1 === 'C' || C === 'C') {
return 'A'
} else if (data1 === 'B' || data2 === 'B') {
return 'B'
} else {
return 'C'
}
}
const statusFilter3 = (data1, data2, data3) => {
if (data1 === 'error' || data2 === 'error' || data3 === 'error') {
return 'error'
} else if (data1 === 'C' || data2 === 'C' || data3 === 'C') {
return 'C'
} else if (data1 === 'B' || data2 === 'B' || data3 === 'B') {
return 'B'
} else {
return 'A'
}
}
const statusFilter4 = (data1, data2, data3, data4) => {
if (data1 === 'error' || data2 === 'error' || data3 === 'error' || data4 === 'error') {
return 'error'
} else if (data1 === 'C' || data2 === 'C' || data3 === 'C' || data4 === 'C') {
return 'C'
} else if (data1 === 'B' || data2 === 'B' || data3 === 'B' || data4 === 'B') {
return 'B'
} else {
return 'A'
}
}
答案 0 :(得分:2)
您只能使用一个功能,而不能使用三个单独的功能。
代码步骤说明
...arg
),并且此arg是一个数组。all_messages
对象,并尝试使用find()从arg
中找到all_messages
的一个键all_messages
返回该键值。A
不包含任何值all_message
,则设置默认值arg
。
const status = (...arg) => {
const all_messages = {error: 'error', C: 'C', B: 'B'};
const message = arg.find(key => !!all_messages[key])
return message ? message : 'A'
}
console.log(status('F', 'F'))
console.log(status('C', 'A'))
console.log(status('C', 'C', 'C', 'C'))
console.log(status('error', 'error', 'error', 'error'))
console.log(status('B', 'B', 'B'))
答案 1 :(得分:0)
您可以为此编写一个函数,而不是三个。像这样:
const statusFilter = (dataArray) ...
比较数组的值。如果它们都相同,则返回值,否则返回A。
答案 2 :(得分:0)
只需将数组用作参数:
const statusFilters = data => {
if (Array.isArray(data)) {
if (data.includes("error")) return "error";
else if (data.includes("C")) return "C";
else if (data.includes("B")) return "B";
else return "A";
}
};
statusFilters([data1, data2, data3 ...]);
答案 3 :(得分:0)
您可以尝试这样的事情:
15:30
答案 4 :(得分:0)
最干净的方法是根据首先要返回的内容,按照优先级排序要检查的状态数组。在您的示例中,顺序似乎为error, c, b, a
,然后如果找到匹配项,则可以遍历该数组并返回该状态。最后,如果没有找到匹配项,则返回默认值,在您的情况下为a
。
// In order of priority
const statuses = [ 'error', 'C', 'B', 'A' ]
const statusFilter = (...args) => {
for (let status of statuses) {
if(args.find(v => v === status))
return status;
}
return 'A'
}
console.log(statusFilter('error', 'B', 'A'))
console.log(statusFilter('C', 'B', 'A'))
console.log(statusFilter('B', 'B', 'A'))
console.log(statusFilter('A', 'A', 'A'))