开发者

Finding an element in an array

4,5,6,7]; pin=3;

We got to search pin in hay.

Conventionally we loop through hay and che开发者_StackOverflow社区ck for pin( assume there is no native function called array.indexOf ).

How about,

  hay=hay.join(",");
  pin=","+pin+",";
  index=hay.indexOf(pin);

Any Suggestions please?


Consider hay of [2,3,4] and a pin of 2... you'll be looking for ",2," in a string "2,3,4". Now you could add commas to the start and end of hay as well, but it's a bit ugly, isn't it?

There's then the problem of strings having variable lengths: consider an array of [1,222222,3,4]. When you look for 3, you'll end up with an inappropriate index because of the length of "222222". (Even in the case of only single digit values, you'll need to divide by 3.)

You've then potentially got problems when you start moving from integers to decimal values, which may be formatted differently in different cultures - possibly using a comma as the decimal separator. I don't know whether JavaScript uses the culture-specific separator by default, but that's part of the problem - you're suddenly having to consider aspects of the language/platform which have nothing to do with the task at hand.

Generally speaking, converting data into a string format in order to do something which doesn't really depend on the string format is a bad idea. It would be better to write a general-purpose indexOf method to perform the looping for you. (I'd be surprised if such a method didn't already exist, to be honest, but it's easy enough to write once and reuse if you need to.)


Heck, assume there is no string indexOf, either.

var A=[11,7,9,1,17,13,19,18,10,6,3,8,2,5,4,14,20,15,16,12],
L=A.length, n=3;


    while(L>-1 && A[--L]!==n);

alert(L)


You don't need to use string in the middle, you can just loop through your array, if I understand your question right.

var hay = [1, 2, 3, 'Whoa', 'wheee', 5, 'needle'], needle = 'needle';

for ( var i = 0, len = hay.length; i < len; i += 1 ) {
    if ( hay[ i ] === needle ) {
        alert( "hay’s element number " + i + " is the needle!" );
        break;
    }

}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜