Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #36094

Re: Cant pop and slice first second element

Newsgroups comp.lang.javascript
Subject Re: Cant pop and slice first second element
From "Evertjan." <exxjxw.hannivoort@inter.nl.net>
References <ebc71280-6e53-4a6a-b11b-3e00a67031d3@googlegroups.com> <XnsAA0A7B698473Aeejj99@194.109.6.166> <d9c040cd-78af-4d59-898f-ae98fc87ff53@googlegroups.com>
Date 2019-03-06 18:46 +0100
Message-ID <XnsAA0ABF09FEEADeejj99@194.109.6.166> (permalink)

Show all headers | View raw


=?UTF-8?Q?Jonas_Th=C3=B6rnvall?= <jonas.thornvall@gmail.com> wrote on 06
Mar 2019 in comp.lang.javascript: 

> Den onsdag 6 mars 2019 kl. 12:08:03 UTC+1 skrev Evertjan.:
>> =?UTF-8?Q?Jonas_Th=C3=B6rnvall?= <jonas.thornvall@gmail.com> wrot
> e on 06
>> Mar 2019 in comp.lang.javascript: 
>> 
>> > I have an trackarray where i want to be able remove all but first
>> > element. 
>> > 
>> > If i stand on last element i pop it otherwise i slice it. But if i
>> > pop all tracks, i never able to pop track 2. Similar when splice
>> > invoked it will not splice when standing on track one, and stop
>> > remove tracks when it removed all beyond track 2. "Because then pop
>> > is invoked", i probabl 
> y
>> > should used length instead of maxtrack. 
>> > 
>> > function removeTrack(tracknr){
>> > console.log(maxtrack+" AND "+tracknr);
>> > if (maxtrack>1){ 
>> 
>> Wrong counting and thinking, try:
>> 
>> if (maxtrack>0){
>> 
>> 
>> > if (maxtrack==tracknr){ track.pop(); tracknr--;
>> > maxtrack--;document.getElementById("track").value--;} else
>> > {track.splice(tracknr, 1); maxtrack--;} changeTrack();}
>> >}

> 
> Thank's Evertjan, unfortunately it is not it.

Well you did not show us how you came to maxtrack,
you should do this:

maxtrack = track.length - 1;

and test it in each case, NOT:

maxtrack--;

> I suspect something goes
> wrong out side function, i really do not get it because after i set to
> zero. 

(maxtrack>1)

will in my example return false if maxtrack is either 1 or 0,
so ALSO if there are TWO members of the array left.

> I still can't remove the two last tracks but they are visually
> written out, but they can't be there because tracknr = maxtrack is down
> at zero.

You must mean "tracknr == maxtrack" 
and that NEVER returns zero or any other number, 
only true or false.

> I will have to check what is going on elsewhere, because the
> maxtrack and tracknr goes down to zero but the two tracks still written
> out. I have to check track.length with console.log. 

NO. Debugging is fine, but should not come in the place of decent code 
writing.

Please stop using outside variables in a funtion to be tested,
since then you cannot test such function outside the context,
which makes interpretation of the debugging process a nightmare.

Try this as a test:

=========================

<script>

function removeTrack(trackNr, trackArray) {
	let maxTrack = trackArray.length - 1;
	if (maxTrack>0) { 
		if (maxTrack==trackNr) {
			trackArray.pop();
		} else {
			trackArray.splice(trackNr, 1);
		};
	};
	console.log('now:', trackArray);
};

let myTrackArray = ['one', 'two', 'three', 'four', 'five' ];
console.log('start:', myTrackArray);

</script>

<button onclick='removeTrack(1, myTrackArray)'>Remove second</button>
and look in console.

=========================

NOW change in the above:

if (maxTrack==trackNr) {

to:

if (false) {

and conclude that the seperate pop() is unnecessary.



-- 
Evertjan.
The Netherlands.
(Please change the x'es to dots in my emailaddress)

Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Cant pop and slice first second element Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-03-06 01:41 -0800
  Re: Cant pop and slice first second element "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2019-03-06 12:07 +0100
    Re: Cant pop and slice first second element Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-03-06 07:42 -0800
      Re: Cant pop and slice first second element "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2019-03-06 18:46 +0100
        Re: Cant pop and slice first second element Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-03-06 10:05 -0800
          Re: Cant pop and slice first second element Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-03-06 10:13 -0800
          Re: Cant pop and slice first second element Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-03-06 10:17 -0800
          Re: Cant pop and slice first second element "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2019-03-06 23:52 +0100
    Re: Cant pop and slice first second element Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-03-06 08:45 -0800
      Re: Cant pop and slice first second element Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-03-06 09:19 -0800
        Re: Cant pop and slice first second element Jonas Thörnvall <jonas.thornvall@gmail.com> - 2019-03-06 09:42 -0800

csiph-web