Problem with arrays in Javascript[solved] | SoloLearn: Learn to code for FREE!

+5

Problem with arrays in Javascript[solved]

I expected to see Index 0 here https://code.sololearn.com/WVx9HLRo7YM5/#js What must I do?

8/9/2020 2:12:49 PM

Frogged

13 Answers

New Answer

+8

I didn't find any solution, but I invented one, maybe it will help you. It works only with two-dimensional arrays, but you can edit it to work with any length: /* * @author Luis Calderon * @description find two-dimensional arrays * @param { Array } toFind value to find * @return { number } Index of the found array, if not it returns -1 */ Array.prototype.findArray = function (toFind) { var onIndex = -1; this.find((value, index) => { var exist = (value[0] === toFind[0]) && (value[1] === toFind[1]); if (exist) onIndex = index; }); return onIndex; } a = [[2, 5], [1, 3], [20, 3], [0, 0], [2, 4], [1, 1], [1, 4]]; //tests console.log(a.findArray([0, 1]));//-1 console.log(a.findArray([1, 3]));//1 console.log(a.findArray([2, 4]));//4 console.log(a.findArray([2, 5]));//0 console.log(a.findArray([0, 1]));//-1 try it: https://code.sololearn.com/WqccsU3U2sgn/?ref=app

+7

indexOf uses strict equality === and in JavaScript arrays are objects. So different but similar arrays are not equal. When using the same array instance, it works https://code.sololearn.com/Wp22bIIG20ES

+7

grrrrrrrr I want my python back😱😱😱

+7

If the problem has been solved add "Solved" in your question heading.😊

+5

Oma Falk you may have to create your own function that does that. 😉

+5

Lol. Check if lodash or underscore can help with that.

+4

luis calderón finally I did it similiar https://code.sololearn.com/WyShFT4q6l7z/?ref=app

+4

HonFu indexOf will always result in - 1 Javascript tests for === means identity not equality. That exactly was my prob.

+4

I have not hit this problem yet in JS, but I am so glad I read this thread because I am sure I will see it soon. I am already going crazy trying to figure why things don't act the way I think they should trying to associate python with everything. Thank you all for the enlightening! I have so much to learn. 🙃

+2

Ore I save coordinates in my Array. I need a solution to see, if coords already in my array. What can I do?

+2

Isn't that just a reference issue, just like in Python? EDIT: Seems it is. If you create the list first, it is found properly. var a = [] var b = [1,2] a.push(b) alert(a) alert(a.indexOf(b)) if (a.indexOf([1,2]) >= 0){ alert("Array found") }}

+2

Yeah, Python IS convenient, isn't it? You have 'is' and ==, so you can ducktype your array-like objects so that they give True for comparable content AND preserve the identity of each container anyway.

+1

It is tricky. Even stuff that looks exactly the same, may behave differently between the languages. Operator precedence being one of them. You basically have to make sure every time, when things become a little more complex.