使用操作在 JavaScript 中产生所需的结果
问题
我们需要编写一个JavaScript函数,它接受一个正好包含4个数字的数组,arr作为第一个参数,一个目标作为第二个参数。
我们的函数需要判断数组arr中的数字是否可以通过*、/、+、-、(、)来得到等于target的值。
例如,如果函数的输入是
输入
const arr = [5, 3, 2, 1]; const target = 4;
输出
const output = true;
输出说明
因为我们可以像这样实现4-
(5 - 1) * (3 - 2) = 4
示例
以下是代码-
const arr = [5, 3, 2, 1];
const target = 4;
const canOperate = (arr = [], target = 1) => {
const isValid = x => Math.abs(x - target) < 0.0000001
const helper = (arr = []) => {
if (arr.length === 1) {
return isValid(arr[0])
}
let valid = false
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
const nextArr = arr.filter((x, index) => index !== i && index !== j)
valid = valid || helper([...nextArr, arr[i] + arr[j]])
|| helper([...nextArr, arr[i] - arr[j]])
|| helper([...nextArr, arr[j] - arr[i]])
|| helper([...nextArr, arr[i] * arr[j]])
|| helper([...nextArr, arr[i] / arr[j]])
|| helper([...nextArr, arr[j] / arr[i]])
}
}
return valid
}
return helper(arr)
}
console.log(canOperate(arr, target));输出结果true
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练