0

Can anyone help me to find the error? My main target is when we enter an array to give the result same as the below I showed, Input

{-5, -4, 10, 12, 13, 4, 5, -8, -6} 

output

{10, 12, 13, 4, 5, -5, -4, -8, -6}

Here I attached my full code. I don't get outputs.

enter image description here

function foo() {
  var arrch = document.getElementById("text").value.spilt(" ").map(Number);
  var dlina = arrch.length;
  var new_arr = [];
  var new_arr2 = [];
  var k = 0;
  var summa = 0;
  var n = 0;

  for (var i = 0; i < dlina; i++) {
    if (arrch[i] > 0) {
      summa += arrch[i];
      new_arr[n] = arrch[i];
      n++;
    } else if (arrch[i] < 0) {
      new_arr2[k] = arrch[i];
      k++;
    }
  }
  new_arr = new_arr.join(" ");
  new_arr2 = new_arr2.join(" ");

  document.getElementById("text2").innerHTML = new_arr + " " + new_arr2;
  document.getElementById("text3").innerHTML = summa;
}
<H3>RK1</H3>
<form>
  <p>Enter Array</p>
  <input type="text" id="text" placeholder="Enter Text"><br>
  <p>Changed array</p>
  <p id="text2"></p>
  <p>plus Array</p>
  <p id="text3"></p>
  <button onclick="foo()">Give Answer</button>
</form>
Michael M.
  • 10,486
  • 9
  • 18
  • 34
Ivan Snow
  • 3
  • 2

2 Answers2

0

If you just want to sort the negative numbers to the end of the array, you can sort based on the sign of the numbers. You can sum the array using reduce:

const arr = [-5,-4,10,12,13,4,5,-8,-6]

arr.sort((a, b) => Math.sign(b) - Math.sign(a))

console.log(arr)

const sum = arr.reduce((acc, el) => acc + el)

console.log(sum)

Here's a modified version of your code with those changes (and the typo in split noted by @EricFortis corrected):

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <!--
        Positive Numbers one side and negetive numbers other side
      -->
  <title>RK1</title>
</head>

<body>
  <H3>RK1</H3>
  <form>
    <p>Enter Array</p>
    <input type="text" id="text" placeholder="Enter Text"><br>
    <p>Changed array</p>
    <p id="text2"></p>
    <p>plus Array</p>
    <p id="text3"></p>
    <button onclick="foo(event)">Give Answer</button>
    </form>
    <script type="text/javascript">
      function foo(e) {
        e.preventDefault();
        var arrch = document.getElementById("text").value.split(" ").map(Number);
        arrch.sort((a, b) => Math.sign(b) - Math.sign(a))
        var summa = arrch.reduce((acc, el) => acc + el)

        document.getElementById("text2").innerText = arrch;
        document.getElementById("text3").innerText = summa;
      }
    </script>

</body>

</html>
pilchard
  • 12,414
  • 5
  • 11
  • 23
Nick
  • 138,499
  • 22
  • 57
  • 95
0

you can code that this way...

const myForm = document.querySelector('#my-form')

myForm.onsubmit = e =>
  {
  e.preventDefault() 
  let res = myForm.txtNums.value
    .match(/([-+]?\d+)/g).map(Number)
    .reduce((r,n) =>
      {
      r[(n<0?'neg':'pos')].push(n)
      r.sum += n
      return r 
      }
      ,{sum:0,pos:[],neg:[]}
    ) 
  myForm.txtOut_1.textContent = `{${res.pos.concat(res.neg).join(',')}}`
  myForm.txtOut_2.textContent = res.sum
  }
body {
  font-family : Arial, Helvetica, sans-serif;
  font-size   : 16px;
}
label {
  display   : block;
  font-size : .8rem;
  padding   : .4rem .2rem;
  }
input,
output {
  display   : block;
  border    : 1px solid lightslategrey;
  width     : 16rem;
  font-size : 1rem;
  padding   : .2rem .4em;
  }
<form id="my-form">
  <label>Enter Array
    <input type="text" name="txtNums"
           placeholder="Enter Text"
           value="{-5,-4,10,12,13,4,5,-8,-6}">
  </label>  
  <label>Changed array 
    <output name="txtOut_1">.</output>
  </label> 
  <label>plus Array
    <output name="txtOut_2">.</output>
  </label> 
  <button>Give Answer</button>
</form>
Mister Jojo
  • 20,093
  • 6
  • 21
  • 40