0

私はここにあるこのコードに完全に困惑しています。基本的には、Word オブジェクトの配列を調べて、switch ステートメントを使用して単語の種類に基づいて整理しようとしています。これはすべて、ボタンが押されるのを待っている jQuery によってトリガーされます。

for (var i=0; i<wordList.length; i++)
{
    switch (wordList[i].type) {
        case "1": nouns.push(wordList[i].word); break;
        //"1" is the type flag for noun, the "word" property is the string containing the word
        ... //Rest of word types
    }
}

単語は実際には nouns 配列に割り当てられません。そのため、大文字と小文字の「1」行を次のように変更しました。

case "1": nouns.push(wordList[i].word); asdf = nouns; asdf2 = wordList[i].word; break;

var がなければ、asdf と asdf2 は暗黙的にグローバルになったので、コンソールでそれらを操作できました。

asdf
asdf2

[] と "I" がそれぞれ返されたので、単語を取得できましたが、配列には追加されませんでした。

asdf.push(asdf2)

1 が返され、asdf の次のログで ["I"] が返されました。

ここで何が問題なのですか?

編集:完全な関連コード

//Declare arrays
var articles=[], properNouns=[], nouns=[], pluralNouns=[], adjectives=[], conjunctions=[], verbs=[], pluralVerbs=[], adverbs=[], prepositions=[], interrogatives=[];

//Sort words into proper arrays
for (var i=0; i<wordList.length; i++)
{
    switch (wordList[i].type) {
        case "1": nouns.push(wordList[i].word); asdf = nouns; asdf2 = wordList[i].word; break;
        case "11": pluralNouns.push(wordList[i].word); break;
        case "12": properNouns.push(wordList[i].word); break;
        case "2": verbs.push(wordList[i].word); break;
        case "21": pluralVerbs.push(wordList[i].word); break;
        case "3": adjectives.push(wordList[i].word); break;
        case "4": adverbs.push(wordList[i].word); break;
        case "5": conjunctions.push(wordList[i].word); break;
        case "6": prepositions.push(wordList[i].word); break;
        case "7": interrogatives.push(wordList[i].word); break;
        case "8": articles.push(wordList[i].word); break;
        default: console.log("Error, could not sort "+wordList[i].word); break;
    }
}
4

3 に答える 3

1

JSFiddle の例を次に示します。

コードから例に加えられた唯一の変更:

  • 単語リストの定義

  • jsfiddle の例では、出力を追加する div タグ

あなたが望むことをするようです。wordList の定義は異なりますか?

    $(document).ready(function () {
    //Declare arrays
    var articles = [], properNouns = [], nouns = [], pluralNouns = [], adjectives = [], conjunctions = [], verbs = [], pluralVerbs = [], adverbs = [], prepositions = [], interrogatives = [];

    var wordList = [{ 'type': "1", 'word': 'foo' },
         { 'type': "1", 'word': 'foo1' },
         { 'type': "1", 'word': 'foo2'}, 
         { 'type': "1", 'word': 'foo3' }];

    //Sort words into proper arrays
    for (var i = 0; i < wordList.length; i++) {
        switch (wordList[i].type) {
            case "1":
                nouns.push(wordList[i].word);
                asdf = nouns;
                asdf2 = wordList[i].word;
                break;
            case "11":
                pluralNouns.push(wordList[i].word);
                break;
            case "12":
                properNouns.push(wordList[i].word);
                break;
            case "2":
                verbs.push(wordList[i].word);
                break;
            case "21":
                pluralVerbs.push(wordList[i].word);
                break;
            case "3":
                adjectives.push(wordList[i].word);
                break;
            case "4":
                adverbs.push(wordList[i].word);
                break;
            case "5":
                conjunctions.push(wordList[i].word);
                break;
            case "6":
                prepositions.push(wordList[i].word);
                break;
            case "7":
                interrogatives.push(wordList[i].word);
                break;
            case "8":
                articles.push(wordList[i].word);
                break;
            default:
                console.log("Error, could not sort " + wordList[i].word);
                break;
        }
    }
    for (var i in nouns) {
        console.log(nouns[i]);
        $('#output').append(nouns[i] + '<br>');
    }
    console.log(nouns);
});
于 2013-06-14T02:33:56.263 に答える
1

問題の原因: データ ファイルが変更され、VERBS が正しくタグ付けされていないため、文が生成されない

配列が空だった理由: 配列 を処理するために使用されたシステムがそれらをにし、新しい変数が配列を指しasdfているだけで、コンソールで使用するまでに空でした

どうすればこれを回避できたでしょうか。

case "1": nouns.push(wordList[i].word); asdf = nouns.slice(0); break;

これを公共サービス広告にしましょう。デバッグ中に配列をコピーします。

于 2013-06-14T03:11:21.277 に答える