javascript - 如何对数组中的特定元素求和?
问题描述
我正在尝试操作一个数组。对于每个操作,我需要为两个给定索引之间的每个数组元素添加一个值,包括在内。这是一个例子:
0 1 100 // From index 0 to 1, add 100
1 4 100 // From index 1 to 4, add 100
2 3 100 // From index 2 to 3, add 100
// Expected Result:
[100, 200, 200, 200, 100]
// Explanation:
[100, 100] // After the first update.
[100, 200, 100, 100, 100] // After the second update.
[100, 200, 200, 200, 100] // After the third update.
这是据我所知:
function arrayManipulation(n, queries) {
let newArr = [];
for (let i = 0; i < queries.length; i++) {
let indexIni = queries[i][0];
let indexEnd = queries[i][1];
let indexSum = queries[i][2];
for (indexIni; indexIni < indexEnd; indexIni++) {
console.log(indexIni, indexEnd, indexSum);
newArr.splice(indexIni, 0, indexSum);
}
}
console.log(newArr);
}
let n1 = 5;
let queries1 = [
[0, 1, 100],
[1, 4, 100],
[2, 3, 100]
];
arrayManipulation(n1, queries1);
我试图做的是在第二个参数之上工作,splice()
这样我就可以以某种方式将它加到我要输入的数字上。
我正在尝试的方式,可能吗?或者有没有更简单的方法?
解决方案
1)循环应该上升到
indexIni <= indexEnd
2)从头开始迭代并检查该特定索引上是否存在任何数字。如果确实如此,则添加indexSum
else 将值设置为indexSum
。
function arrayManipulation(n, queries) {
let newArr = [];
for (let i = 0; i < queries.length; i++) {
let [indexIni, indexEnd, indexSum] = queries[i];
for (indexIni; indexIni <= indexEnd; indexIni++) {
if (newArr[indexIni]) {
newArr[indexIni] += indexSum;
} else {
newArr[indexIni] = indexSum;
}
}
}
console.log(newArr);
}
let n1 = 5;
let queries1 = [
[0, 1, 100],
[1, 4, 100],
[2, 3, 100],
];
arrayManipulation(n1, queries1);
推荐阅读
- android - 为什么我们在android中使用drawable v24?
- javascript - 无法访问 Angular 组件中动态创建的元素
- python - 使用 for 循环将多个 csv 读取到 Python pandas 中的多个数据帧
- javascript - 在两张卡之间导航
- django - django中基于表单输入和字符串操作的查询
- c# - 修改数据时自动从excel读取数据
- android - 无法在本机反应中编辑 TextInput 数据
- ruby - 真正的输入功能
- php - 您在上传多张图片时没有选择要上传的文件
- jade-platform - How do I create an extract for a delta from the command line