在javascript中添加代词
Adding Pronumerals together in javascript
本文关键字:添加 javascript 更新时间:2023-09-26
我希望javascript能够解释以下内容(a
和b
总是不同的,所以这些只是一个例子)
a=(3x)+y
b=x+(4y)
并返回以下
a+b=(4x)+(5y)
所有变量都是字符串而不是整数,所以数学不能应用于a
, b
, x
或y
我还没有开始这个特殊的实例,因为我不知道从哪里开始。
注:我没有jQuery的任何经验,所以如果可能的话,尽量避免使用它
编辑:该程序旨在帮助在游戏minecraft中找到原材料。例如,如果你想要一把钻石剑(a
)和一把钻石镐(b
), a
需要1块木头(x
)和2块钻石(y
), b
需要1块木头(x
)和3块钻石(y
)。一旦我通过这个程序运行它,我想要一个回应说,它需要2个木材和5个钻石。
首先,让我们编写三个小的辅助函数:
// exprToDict("3x + y") -> {x:3, y:1}
function exprToDict(e) {
var d = {};
e.replace(/('d+)'s*('w+)|('w+)/g, function($0, $1, $2, $3) {
d[$2 || $3] = parseInt($1 || 1);
});
return d;
}
// addDicts({x:1, y:2}, {x:100, y:3}) -> {x:101, y:5}
function addDicts(a, b) {
var d = {};
for(var x in a) d[x] = a[x];
for(var x in b) d[x] = (d[x] || 0) + b[x];
return d;
}
// dictToExpr({x:1, y:2}) -> x + (2 y)
function dictToExpr(d) {
var e = [];
for(var x in d)
if(d[x] == 1)
e.push(x);
else
e.push("(" + d[x] + " " + x + ")");
return e.join(" + ")
}
一旦我们有了,我们就准备编写main函数:
function addThings(a, b) {
return dictToExpr(
addDicts(
exprToDict(a),
exprToDict(b)
))
}
让我们测试一下:
sword = "(3 wood) + diamond"
pickaxe = "wood + (2 diamond)"
console.log(addThings(sword, pickaxe))
结果:(4 wood) + (3 diamond)
为了处理两件以上的事情,修改addDicts
以接受数组:
function addDicts(dicts) {
var sum = {};
dicts.forEach(function(d) {
for(var x in d)
sum[x] = (sum[x] || 0) + d[x];
});
return sum;
}
并将addThings
重写为:
function addThings(things) {
return dictToExpr(
addDicts(
things.map(exprToDict)));
}
的例子:
sword = "(3 wood) + diamond"
pickaxe = "wood + (2 diamond)"
house = "10 wood + iron"
console.log(addThings([sword, pickaxe, house]))
首先,根据您的语法将输入字符串解析为要处理的对象:
function parseLine(input) { // pass a string like "a=(3x)+y"
var parts = input.split("=");
if (parts.length != 2) return alert("Invalid equation");
for (var i=0; i<2; i++) {
var summands = parts[i].split("+");
parts[i] = {};
for (var j=0; j<summands.length; j++) {
summands[j] = summands[j].replace(/^'s*'(?|')?'s*$/g, "");
var match = summands[j].match(/^(-?'d*'.?'d+)?'s*([a-z]+)$/);
if (!match) return alert("Parse error: "+summands[i]);
var mul = parseFloat(match[1] || 1);
if (match[2] in parts[i])
parts[i][match[2]] += mul;
else
parts[i][match[2]] = mul;
}
}
return parts;
}
// example:
parseLine("a=(3x)+y")
// [{"a":1},{"x":3,"y":1}]
然后,在其上应用求解线性方程组的算法。我把它的实现留给你:-)
哇,你的问题完全改变了,我要写一个全新的答案:
你可以直接使用对象。将工具所需的材料存储在键值映射中:
var diamondSword = {
diamond: 2,
stick: 1
};
var diamondPickaxe = {
diamond: 3,
stick: 2
};
一个加法函数是非常简单的:
function add() {
var result = {};
for (var i=0; i<arguments.length; i++)
for (var item in arguments[i])
result[item] = (result[item] || 0) + arguments[i][item];
return result;
}
// usage:
add(diamondSword, diamondPickaxe)
// {"diamond":5, "stick":3}
相关文章:
- 如何在ASP中为用户控件添加Javascript对象网
- 向Android浏览器添加JavaScript
- 如何在Opencart中动态添加JavaScript
- 如何根据需要优雅地添加javascript/css
- 在Android的Webview中添加Javascript
- Phonegap/Cordova:如何添加Javascript多点触摸事件
- 添加@javascript标记时,Cucumber中的HTTP身份验证失败
- 当我的表单中已经有一个操作时添加JavaScript
- 当我添加JavaScript时,链接按钮停止工作
- Ruby on Rails 4:在 Rails Web 应用程序中添加 Javascript 文件时遇到问题
- 可以'无法正确添加JavaScript值
- 在页面上添加javascript后呈现指令
- 如何在我更改输入时添加javascript操作'的内容
- 在Dotnet Highchart中添加javascript函数
- 如何在R Shiny应用程序中添加JavaScript来更改CSS文件
- 基于使用的ASP MVC EditorFor/Partial模板添加JavaScript引用
- 添加javascript变量以发送数据
- 动态添加javascript事件监听器,做一些无法解释的事情
- 使用wp_enque_script()在Wordpress-functions.php中添加Javascript
- 添加JavaScript onClick以动态生成asp按钮