将 JavaScript 数组中的 n 个数字添加到数组中的先前数字
add n numbers in a javascript array to the previous numbers in array
我有一个已知的值要比较
var sT = 100;
具有随机值数组和未知长度
var someArray = [12, 21, 3, 54, 5, ... ]
然后我想将每个数字添加到所有以前的值中
var one = someArray[0];
var two = someArray[0]+someArray[1];
var three = someArray[0]+someArray[1]+someArray[2];
// ...
或者也许我可以做这样的事情?
var otherArray = [];
someArray.forEach(function(i){
otherArray.push(i+=i);
somefunction();
});
function somefunction() {
otherArray.forEach(function(i){
// ?
})
}
那么我需要像这样检查从"一"开始的数组的值......
var int;
if ( sT <= one ){
int = 1;
}
else if ( sT >= one && sT <= two ) {
int = 2;
}
else if ( sT >= two && sT <= three ) {
int = 3;
}
else if ...
// until the last
else if ( sT >= twenty*0.8 ) {
int = 20;
}
有没有办法以编程方式做到这一点?
您可以使用
.map()
将数组重新映射到一系列总和。 然后使用 .findIndex()
查找输入所在范围的索引。 要只获取带有总和的数组,请不要执行其中.findIndex()
部分
var sT = 56;
var arr = [1, 54, 34, 2, 64, 75, 87]
function sumSeries(r, n) {
return r+n;
}
function findRange(arr,sT) {
return arr.map(function(v,i,a) {
return a.slice(0,i+1).reduce(sumSeries); // Set this array value to sum of it and all previous values
}).findIndex(function(v,i,a) { // When function returns true findIndex will return current index
if(i == 0) {
return sT <= v;
} else if(i == a.length-1) {
return sT >= v*0.8;
}
return a[i-1] <= sT && sT <= v
}) + 1;
}
document.write(findRange(arr,sT))
编辑:根据需要向返回的索引值添加 +1。
这里不是JavaScript代码,没有测试,应该说明一下。
var sum = someArray[0]
var intValue
var total = someArray.count //TotalNumber
for int index = 0; index < total; index ++ {
if (index + 1) >= total {
return
}
if sT < sum {
intValue = 1
}else if sT >= total*0.8 {
intValue = total
} else if(sT >= sum && sT <= sum + someArray[index+1]) {
intValue = index+2
}
}
我使用了@Goblinlord的稍微修改的版本
此外,在返回中添加 +1 以考虑零基数。
var sT = 56;
var sT = 56;
var arr = [1, 54, 34, 2, 64, 75, 87];
function sumSeries(r, n) {
return r+n;
}
function findRange(arr,sT) {
return arr.map(function(v,i,a) {
return a.slice(0,i+1).reduce(sumSeries);
}).findIndex(function(v,i,a) {
if(i === 0) {
if(sT <= v)
return true;
return false;
}
if(i == a.length-1) {
if(sT >= v*0.8)
return true;
return false;
}
if(a[i-1] <= sT && sT <= v)
return true;
return false;
});
}
console.log( findRange(arr,sT)+1 );
相关文章:
- JavaScript 在数组中查找缺少的数字
- 在javascript数组中分散数字
- 将数组键转换为数字node.js
- 删除JS数组中的最小数字
- 创建具有2个唯一数字的Javascript数组
- Javascript按数字顺序排序()数组
- 如何将数字切成更小的数字以适合我的数组
- Javascript中的非数字索引多维数组
- 指定数组中的元素对,其总和等于特定的目标数字
- 从数组/字符串中删除所有小数和单个数字
- 从数组[Javascript]的总长度中减去一个干净的数字
- 如何获取数组中数字的最大出现次数
- 如何将数字相加并将结果放入数组中
- JS:从数组中查找特定范围内的最低/最高数字
- 返回最大数字的数组
- 将数组中的所有数字组合相加
- 在数组中生成随机数,没有任何重复的数字
- 循环遍历数字和字母数组并仅提取数字
- 给定一个带有数字的数组,我如何编写一个递归函数,当 2 个元素加起来为一个目标时,它会在数组中查找索引
- 函数给出输入数字*数组的长度,而不是输入数字*数组的值(javascript)