0

文字列から特定のn番目の要素を取得するにはどうすればよいですか。GOOGLEという単語から3つおきの要素を取得したい場合、どうすればよいですか。これまで私はこれを行いましたが、Ifの後に何を入力すればよいかわかりません

      function create_string( string ) { 

        var string_length=string.length;

        var new_string=[];

        for( var i=0; i<string_length; i++) {

            if(string[i]%3==0) {



            }

            new_string.push(string[i]);
        }

        return new_string;
    }
4

4 に答える 4

3

関数に渡された特定のインデックスで char を返すcharAt()関数を使用します。Stringを使用してcharAt、3 文字おきに返すスクリプトを作成しました。

var result = "";

for(var i = 2; i < test.length; i+=3){
   result += test.charAt(i);
}

このスクリプトをより再利用可能な関数に変更したい場合:

var test = "GOOGLE";

function getEveryNthChar(n, str){
   var result = "";
   for(var i = (n-1); i < test.length; i+=n){
      result += str.charAt(i);
   }
   return result;
}

alert(getEveryNthChar(1,test));
alert(getEveryNthChar(2,test));
alert(getEveryNthChar(3,test));
alert(getEveryNthChar(4,test));

実際のデモ: http://jsfiddle.net/Q7Lx2/

ドキュメンテーション

于 2012-12-13T10:43:26.617 に答える
1

これはどう?

function create_string( string ) { 

    var string_length=string.length;

    var new_string=[];

    for( var i=2; i<string_length; i+=3) { // instead of an if, use +=3
       new_string.push(string.charAt(i));
    }

    return new_string.join(""); // turn your array back into a string

}

このコンパクトを作り始めると、ケビンと同じ答えになってしまうことに注意してください;-)

function create_string( s ) { 
    var new_string = '';
    for( var i=2; i<s.length; i+=3) { // instead of an if, use +=3
       new_string += s.charAt(i);
    }
    return new_string; 
}
于 2012-12-13T10:43:28.147 に答える
0

3 だけでなく、任意の数に対して機能する関数を次に示します。

function stringHop(s, n) {
    var result = "";
    for (var i = 0; i < s.length; i+= n) {
        result += s.charAt(i);
    }
    return result;
}

var foo = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var bar = stringHop(foo, 2);    // returns "ACEGIKMOQSUWY"
var baz = stringHop(foo, 3);    // returns "ADGJMPSVY"
于 2012-12-13T10:47:13.107 に答える
0

String.charAt(index)0 から までの指定されたインデックスの文字を返しますString.length - 1。そう:

String.prototype.every = function(n) {
  var out = '';

  for (var i = 0; i < this.length; i += n) {
    out += this.charAt(i);
  }

  return out;
}

var str = "GOOGLE";
console.log(str.every(3)) // Outputs: GG

最初の文字を含めたくない場合は、forループを次のように変更します。

for (var i = n - 1; i < this.length; i += n) {
于 2012-12-13T10:47:50.457 に答える