仅打印负数及其总和 aplaying 循环和数组
Print only negative numbers and its sum aplaying loops and arrays
我需要一个程序方面的帮助,我必须使用一个循环来输出所有负整数及其总和。我应该只使用基本方法。
负整数:-2, -1, -7 <----//末尾无逗号。
负数求和:-10
当我运行我的程序最后一个整数在末尾有一个额外的逗号时,我不能用“if (i != array.length-1)”把它去掉,因为我数组中的最后一个元素是正数,但循环分析有一个空元素。我如何以合乎逻辑的方式删除该逗号。结果必须在用逗号 space: (", ") 分隔的循环内打印。
function negativeArray(array)
{
document.write("Negative integers: ")
for (var i = 0, count = 0; i < array.length; i++)
{
if (array[i] != undefined && array[i] < 0){
document.write(array[i]);
count += array[i];
if (i != array.length-1) document.write(", ")}
}
document.write( "<br>Sum negative nums: " + count)
}
var items = [1, -2, 3, 4 -5, 6, -7, 8];
negativeArray(items);
问题是您只检查了位置 Array.length-1,而它应该是 Array.length-2。这是有效的代码示例:
function negativeArray(array)
{
document.write("Negative integers: ")
for (var i = 0, count = 0; i < array.length; i++)
{
if (array[i] != undefined && array[i] < 0){
document.write(array[i]);
count += array[i];
if (i != array.length-2) {
document.write(", ");
}
}
}
document.write( "<br>Sum negative nums: " + count)
}
var items = [1, -2, 3, 4 -5, 6, -7, 8];
negativeArray(items);
以上代码非常适合我,如果您有任何问题,请随时问我!
你可以写得更轻松。先过滤掉所有负数,再求和。
var items = [1, -2, 3, 4 -5, 6, -7, 8];
function negativeArray(array) {
return array.filter(item => item < 0).reduce((sum, current) => sum + current, 0)
}
console.log(negativeArray(items)); // -10
你的逻辑是每次循环并找到下一个负数:
- 写出来。
- 如果写出的数字不是数组的最后一个元素,写“,”。
首先,上面的第 2 步没有多少逻辑意义,因为即使该数字可能不是数组的最后一个元素,它也可能是最后一个 负数阵列。但现在你可能已经意识到这可能会发生,否则你不会发布这个问题。
如果将一个名为 didOutput
的布尔标志最初设置为 false
表示您是否曾经输出过 any 负数,那将更有意义。这是你在循环外设置的。然后循环在伪代码中看起来像这样:
didOutput = false;
loop {
get next negative number;
if didOutput then {
write(", ");
}
write number;
didOutput = true;
}
以这种方式,在每次循环迭代中,当且仅当您至少写出一个数字时,您才能在 写出下一个数字之前写出逗号 。您只需要对现有代码进行一两行更改,我本可以这样做,但这种模式会反复出现并且理解起来很重要,因此您应该尝试自己将其合并到您的代码中。
嘿,我可以帮你:)
只要得到一个像“first”这样的布尔值,它会检查它是否是第一个项目并将“,”放在你的数字之前。您将其设置为 true,然后像这样构建 stf:
If(first == true){
//don t print the „ ,“
first = false
}else {
// print it
}
使用 filter
、join
和 reduce
的更简单方法:
var items = [1, -2, 3, 4 - 5, 6, -7, 8];
document.write(
"Negative integers: ",
items.filter(item => item < 0).join(", ")
);
document.write(
"<br>Sum negative nums: ",
items.reduce((acc, current) => acc + (current < 0 ? current : 0), 0)
);
您的代码是使用 1995 年的语法和方法编写的。document.write()
不应像您正在使用的那样用于生成结果,而不是 for
循环,数组可以是用各种方法迭代。
在您的情况下,最好的方法是使用 Array.filter()
method, which results in a second array of values that match some criteria you establish (negative numbers in this case). Since the results will be in an array, the Array.join()
method will produce a comma separated string result where you don't have to worry about the comma placement. Then, you can sum the resulting array up with Array.reduce()
遍历原始数组
var items = [1, -2, 3, 4 -5, 6, -7, 8];
function negativeArray(array) {
// Use the Array.filter() method to loop
// over an array and produce a new array with
// your desired values
let results = array.filter(function(item){
return item < 0;
});
// .join() will return a comma separated string of the array values
document.getElementById("negatives").textContent = results.join(", ");
// .reduce() will loop over the array and return a single value based on the function passed
document.getElementById("sum").textContent = results.reduce(function(x,y){ return x + y });
}
negativeArray(items);
<!-- Don't use document.write() to add results to the page.
Instead, set up an HTML placeholder for results and populate
it dynamically. -->
<div>Negative Integers: <span id="negatives"></span></div>
<div>Sum of negatives: <span id="sum"></span></div>
我需要一个程序方面的帮助,我必须使用一个循环来输出所有负整数及其总和。我应该只使用基本方法。
负整数:-2, -1, -7 <----//末尾无逗号。
负数求和:-10
当我运行我的程序最后一个整数在末尾有一个额外的逗号时,我不能用“if (i != array.length-1)”把它去掉,因为我数组中的最后一个元素是正数,但循环分析有一个空元素。我如何以合乎逻辑的方式删除该逗号。结果必须在用逗号 space: (", ") 分隔的循环内打印。
function negativeArray(array)
{
document.write("Negative integers: ")
for (var i = 0, count = 0; i < array.length; i++)
{
if (array[i] != undefined && array[i] < 0){
document.write(array[i]);
count += array[i];
if (i != array.length-1) document.write(", ")}
}
document.write( "<br>Sum negative nums: " + count)
}
var items = [1, -2, 3, 4 -5, 6, -7, 8];
negativeArray(items);
问题是您只检查了位置 Array.length-1,而它应该是 Array.length-2。这是有效的代码示例:
function negativeArray(array)
{
document.write("Negative integers: ")
for (var i = 0, count = 0; i < array.length; i++)
{
if (array[i] != undefined && array[i] < 0){
document.write(array[i]);
count += array[i];
if (i != array.length-2) {
document.write(", ");
}
}
}
document.write( "<br>Sum negative nums: " + count)
}
var items = [1, -2, 3, 4 -5, 6, -7, 8];
negativeArray(items);
以上代码非常适合我,如果您有任何问题,请随时问我!
你可以写得更轻松。先过滤掉所有负数,再求和。
var items = [1, -2, 3, 4 -5, 6, -7, 8];
function negativeArray(array) {
return array.filter(item => item < 0).reduce((sum, current) => sum + current, 0)
}
console.log(negativeArray(items)); // -10
你的逻辑是每次循环并找到下一个负数:
- 写出来。
- 如果写出的数字不是数组的最后一个元素,写“,”。
首先,上面的第 2 步没有多少逻辑意义,因为即使该数字可能不是数组的最后一个元素,它也可能是最后一个 负数阵列。但现在你可能已经意识到这可能会发生,否则你不会发布这个问题。
如果将一个名为 didOutput
的布尔标志最初设置为 false
表示您是否曾经输出过 any 负数,那将更有意义。这是你在循环外设置的。然后循环在伪代码中看起来像这样:
didOutput = false;
loop {
get next negative number;
if didOutput then {
write(", ");
}
write number;
didOutput = true;
}
以这种方式,在每次循环迭代中,当且仅当您至少写出一个数字时,您才能在 写出下一个数字之前写出逗号 。您只需要对现有代码进行一两行更改,我本可以这样做,但这种模式会反复出现并且理解起来很重要,因此您应该尝试自己将其合并到您的代码中。
嘿,我可以帮你:)
只要得到一个像“first”这样的布尔值,它会检查它是否是第一个项目并将“,”放在你的数字之前。您将其设置为 true,然后像这样构建 stf:
If(first == true){
//don t print the „ ,“
first = false
}else {
// print it
}
使用 filter
、join
和 reduce
的更简单方法:
var items = [1, -2, 3, 4 - 5, 6, -7, 8];
document.write(
"Negative integers: ",
items.filter(item => item < 0).join(", ")
);
document.write(
"<br>Sum negative nums: ",
items.reduce((acc, current) => acc + (current < 0 ? current : 0), 0)
);
您的代码是使用 1995 年的语法和方法编写的。document.write()
不应像您正在使用的那样用于生成结果,而不是 for
循环,数组可以是用各种方法迭代。
在您的情况下,最好的方法是使用 Array.filter()
method, which results in a second array of values that match some criteria you establish (negative numbers in this case). Since the results will be in an array, the Array.join()
method will produce a comma separated string result where you don't have to worry about the comma placement. Then, you can sum the resulting array up with Array.reduce()
var items = [1, -2, 3, 4 -5, 6, -7, 8];
function negativeArray(array) {
// Use the Array.filter() method to loop
// over an array and produce a new array with
// your desired values
let results = array.filter(function(item){
return item < 0;
});
// .join() will return a comma separated string of the array values
document.getElementById("negatives").textContent = results.join(", ");
// .reduce() will loop over the array and return a single value based on the function passed
document.getElementById("sum").textContent = results.reduce(function(x,y){ return x + y });
}
negativeArray(items);
<!-- Don't use document.write() to add results to the page.
Instead, set up an HTML placeholder for results and populate
it dynamically. -->
<div>Negative Integers: <span id="negatives"></span></div>
<div>Sum of negatives: <span id="sum"></span></div>