1

再帰を使用して、ネストされた配列の中心に到達しようとしています。これは、私が解決しようとしている大きな問題の一部です。解決策はやや初歩的なものだと確信しています。私はJS/Web開発を学んでいて、困惑しています。

これが私のコードです:

var j = [[[["hey!"]]]];

function getNested(obj) {
for (var i = 0; i < obj.length; i++) {
    if (Array.isArray(obj[i])) {
        obj = obj[i];
        getNested(obj);
    } 
    return obj[i];
  } 
}

この関数は、'hey!' を返すはずです。文字列ですが、正しく理解できないようです。

4

2 に答える 2

3

あなたは近くにいます。 for を切り替えるだけfindType(obj)ですreturn getNested(obj[i])これにより、配列内の項目が別の配列でなくなるまで配列をドリルダウンする再帰関数が得られます。また、入力例を考えると、forループは不要でした。

これは、ネストされた配列に要素が1 つだけある場合にのみ機能します。他の人はコメントでこれを表明しています。

var j = [[[["hey!"]]]];

function getNested(obj) {
    if (Array.isArray(obj)) {
        return getNested(obj[0]);
    } 
    return obj;
}

var str = getNested(j);
console.log(str); // "hey!"

jsFiddle Demo

于 2013-09-28T20:28:26.387 に答える