javascript - 声明和运营商问题
问题描述
嘿伙计们,我怎样才能重新排序运算符的声明,以便在记录时结果为 0?
numbers = [23, 12, 71, 10]
operators = [
(a, b) => a + b,
(a, b) => a / b,
(a, b) => a * b,
(a, b) => a - b
];
var result = 1;
operators.forEach(function(op) {
result = Math.floor(op(result, numbers[operators.indexOf(op)]))
});
console.log(result);
我到了一半,但有些东西没有点击?
干杯
解决方案
看起来这行得通!
numbers = [23, 12, 71, 10]
operators = [
(a, b) => a + b,
(a, b) => a - b,
(a, b) => a / b,
(a, b) => a * b
];
result = 1;
operators.forEach(function(op) {
result = Math.floor(op(result, numbers[operators.indexOf(op)]))
});
console.log(result);
我强制这个顺序找到它 - 虽然result
不等于 0,但 shuffle operators
,设置result
回 1,然后forEach
一遍又一遍地运行,直到 result = 0。这是执行此操作的代码:
// From https://www.w3docs.com/snippets/javascript/how-to-randomize-shuffle-a-javascript-array.html
function shuffleArray(array) {
let curId = array.length;
// There remain elements to shuffle
while (0 !== curId) {
// Pick a remaining element
let randId = Math.floor(Math.random() * curId);
curId -= 1;
// Swap it with the current element.
let tmp = array[curId];
array[curId] = array[randId];
array[randId] = tmp;
}
return array;
}
numbers = [23, 12, 71, 10]
operators = [
(a, b) => a + b,
(a, b) => a - b,
(a, b) => a / b,
(a, b) => a * b
];
let result = 1;
while (result != 0) {
result = 1;
operators = shuffleArray(operators);
operators.forEach(function(op) {
result = Math.floor(op(result, numbers[operators.indexOf(op)]))
});
console.log(result);
}
console.log(operators);
推荐阅读
- vue.js - quasar 无法建立资产文件夹
- javascript - 如何将变量从控制器传递到视图并在 Laravel 的 Vue.js 上使用它?
- python - 默认情况下获取一个实例来评估某些东西
- flutter-web - 如何检测flutter web中的鼠标滚轮滚动?
- javascript - 我如何编写一个程序,用于在数据库的帮助下自动单击复选框并显示在引导模式页面中
- php - 如何关闭 laravel 调试模式
- javascript - 无法访问数组中的 JavaScript 对象
- javascript - Recharts 条形图 - 有条件地仅在堆叠条形图中的某些条形上显示标签
- bash - 如何删除文件末尾的这个特殊字符
- javascript - Node Js NPM PDFkit和Voilab pdf表格,生成表格后pdfkit段落错误