Home > Article > Backend Development > Programming examples without If statements
From now on, please try to avoid using if statements to implement our business
You may wonder what are the benefits of not using if? Well~, maybe there is no obvious benefit, it is just to change the way of thinking to solve the problem. There is nothing wrong with if-else, but in some cases a large number of if-else may make the code less readable. Below are some examples to help you feel the mystery.
Coding Tip: Try to Code Without If-statements
##Challenge #1: Count how many odd numbers there are in the numerical arrayWe know an integer type array, count the number of odd numbers in the array
const arrayOfIntegers = [1, 4, 5, 9, 0, -1, 5];if implementation
let counter = 0; arrayOfIntegers.forEach((integer) => { const remainder = Math.abs(integer % 2); if (remainder === 1) { counter++; } }); console.log(counter);non-if implementation
let counter = 0; arrayOfIntegers.forEach((integer) => { const remainder = Math.abs(integer % 2); // 偶数除2的余数为零,奇数的余数为一 counter += remainder; }); console.log(counter);Note: The above two For example, forEach will change the original array, and the method is
variable, which violates the
immutable concept of functional programming currently advocated. Don't worry, it is not the focus of this article. Comparing the two examples, the implementation of the
if statement may be more compatible and can be adapted to the situation where the array element is a
decimal. If the array elements are of floating point type, the second example will not work properly.
new Date()as input, return the current day based on different dates
Workday or
Weekend.
const weekendOrWeekday = inputDate => { const day = inputDate.getDay(); if (day === 0 || day === 6) { return 'weekend'; } return 'weekday'; // Or, for ternary fans: // return (day === 0 || day === 6) ? 'weekend' : 'weekday'; }; console.log(weekendOrWeekday(new Date()));Non-if implementation
const weekendOrWeekday = (inputDate) => { const day = inputDate.getDay(); return weekendOrWeekday.labels[day] || weekendOrWeekday.labels['default']; }; weekendOrWeekday.labels = { 0: 'weekend', 6: 'weekend', default: 'weekday' }; console.log(weekendOrWeekday(new Date()));Have you noticed that the number in
if statement represents which day is the weekend, and determines the conditional distribution The ones are relatively scattered. What we need to do is to correspond the numbers to the
weekend or weekday types. For example, in Example 2, you can use an object or map to store the corresponding relationship.
non-if codeimplementation has better readability and scalability
number type, do double processing (5 => 10, -10 => -20)
string type, repeat each Characters ('hello' => 'hheelloo')
function, the function
array, perform
doubler processing on each element of the array
objectType, do
doubler processing for each attribute of the object
implementation<pre class="brush:php;toolbar:false">const doubler = (input) => {
switch (typeof input) {
case 'number':
return input + input;
case 'string':
return input
.split('')
.map(letter => letter + letter)
.join('');
case 'object':
Object.keys(input)
.map(key => (input[key] = doubler(input[key])));
return input;
case 'function':
input();
input();
}
};
console.log(doubler(-10));
console.log(doubler('hey'));
console.log(doubler([5, 'hello']));
console.log(doubler({ a: 5, b: 'hello' }));
console.log(
doubler(function() {
console.log('call-me');
}),
);</pre>
non
Implementation<pre class="brush:php;toolbar:false">const doubler = (input) => {
return doubler.operationsByType[typeof input](input);
};
doubler.operationsByType = {
number: (input) => input + input,
string: (input) =>
input
.split('')
.map((letter) => letter + letter)
.join(''),
function: (input) => {
input();
input();
},
object: (input) => {
Object.keys(input)
.map((key) => (input[key] = doubler(input[key])));
return input;
},
};
console.log(doubler(-10));
console.log(doubler('hey'));
console.log(doubler([5, 'hello']));
console.log(doubler({ a: 5, b: 'hello' }));
console.log(
doubler(function() {
console.log('call-me');
}),
);</pre>
is similar to Challenge #2, aggregating condition values together for unified processing.
Summary
, the conditions are processed centrally (use object to store their corresponding relationships - the condition is used as key, and the processing is used as value ). The advantage is that it becomes easier to add or delete a certain condition, and the code is more readable. It is recommended to use the key-value
correspondence to replace part of the if-else
conditional judgment. Related recommendations:
The above is the detailed content of Programming examples without If statements. For more information, please follow other related articles on the PHP Chinese website!