javascript - 如何拆分字符串,转换为数字和求和
问题描述
我有一个函数,我已经修改它来获取一个字符串(仅由零和一组成)。字符串 ( timesheetcoldata
):
100000000000000000000000100000000000000000000000100000000000000000000000100000000000000000000000100000000000000000000000100000000000000000000000
每次运行函数时,字符串项(数字一和零)都会改变。它总是相同的长度。我已经使上面的字符串更容易看到我想要实现的目标。
我想返回第一个字符,然后返回每 24 个字符(如函数中的变量 colsCount 中)。因此,在上面的示例中,它将返回如下内容:111111
然后我想将这些字符转换为数字(类似于[1, 1, 1, 1, 1, 1]
)。
然后我想将这些数字相加(所以它会返回,在示例中:)6
。
然后我想检查返回的数字是否与变量匹配:rowsCount
或者true
如果匹配,false
如果不匹配。
我的功能:
$("#J_timingSubmit").click(function(ev){
var sheetStates = sheet.getSheetStates();
var rowsCount = 6;
var colsCount = 24;
var timesheetrowsdata = "";
var timesheetcoldata = "";
for(var row= 0, rowStates=[]; row<rowsCount; ++row){
rowStates = sheetStates[row];
timesheetrowsdata += rowStates+(row==rowsCount-1?'':',');
}
timesheetcoldata = timesheetrowsdata.replace(/,/g, '');
console.log(timesheetcoldata);
});
非常感谢 Rajesh 和 MauriceNino(以及所有其他贡献者)。
使用他们的代码,我能够提出以下工作功能:
$("#J_timingSubmit").click(function(ev){
var sheetStates = sheet.getSheetStates();
var rowsCount = 6;
var timesheetrowsdata = "";
var timesheetcoldata = "";
for(var row= 0, rowStates=[]; row<rowsCount; ++row){
rowStates = sheetStates[row];
timesheetrowsdata += rowStates+(row==rowsCount-1?'':',');
}
timesheetcoldata = timesheetrowsdata.replace(/,/g, '');
var count = 0;
var list = [];
for(var i = 0; i< timesheetcoldata.length; i+=24) {
const num1 = Number(timesheetcoldata.charAt(i));
list.push(num1);
count += num1;
}
let isSameAsRowsCount = count == rowsCount;
console.log('Is Same? ', isSameAsRowsCount);
});
解决方案
您始终可以依靠传统for
的方式进行此类操作。使用函数式操作可以更具可读性,但会更耗时(虽然不是很多)。
你可以试试这个简单的算法:
- 创建一个包含所有数字的列表和一个
count
保存总和的变量。 - 循环字符串。由于字符串是固定的,您可以将增量因子设置为 count(
24
)。 - 转换给定索引处的字符并将其保存在变量中。
- 将此变量推送到列表中,并在每个间隔计算总和。
在此循环结束时,您拥有两个值。
var string = '100000000000000000000000100000000000000000000000100000000000000000000000100000000000000000000000100000000000000000000000100000000000000000000000';
var count = 0;
var list = [];
for(var i = 0; i< string.length; i+=24) {
const num1 = Number(string.charAt(i));
list.push(num1);
count += num1;
}
console.log(list, count)
推荐阅读
- facebook - 脸书上被屏蔽的网址
- java - Java异步调用目标输出的方法
- python - 动态房间 Flask Socket.IO
- google-apps-script - 用于将 Google 表单提供的时间戳转换为 6-8 位的 Google 表格脚本
- python - 如何在我的 py 游戏的背景中播放音乐?
- docker - Flask 重定向命令间歇性地重定向到 http 而不是 https 链接
- javascript - 在 React 中使用字符串而不是 CSSProperties 设置内联样式
- laravel - 访问 laravel 集合中的索引
- hyperledger-fabric - 异常是否会恢复超级账本结构中的交易?
- python - 有没有办法从列表中检索多个随机值?