2016-07-21 8 views
0

私は、文字列を分割し、その半分を関数のパラメータのように渡したいと思います。しかし、この関数はパラメータを全体のように扱います。例:aaa,bbb,ccc(3パラメータ)ですが、1つのパラメータ'aaa,bbb,ccc'を理解しています。これはどうすればいいですか?配列に分割して引数として渡します。

var text = "aaa,bbb,[email protected],eee,fff" 
var itens_menu = text.split('@'); 
var item_menu1 = itens_menu[0]; 
var item_menu2 = itens_menu[1]; 

item = Menu(itens_menu[0]); 
item2 = Menu(itens_menu[1]); 


function Menu() 
{ 
    var ItemText = arguments[0]; 
} 
+1

'.split()'もう一度? – 4castle

答えて

4

.split()値のそれぞれを再び。しかし、正しい変数をMenuに渡す必要もあります。あなたはitens_menu[0]を渡していましたが、item_menu1を渡す必要があります。

オプション1:使用する引数

var text = "aaa,bbb,[email protected],eee,fff" 
 
var itens_menu = text.split('@'); 
 
var item_menu1 = itens_menu[0].split(','); 
 
var item_menu2 = itens_menu[1].split(','); 
 

 
var item = Menu(item_menu1); 
 
var item2 = Menu(item_menu2); 
 

 

 
function Menu() { 
 
    var ItemText = arguments[0]; // this is the array 
 
    console.log(ItemText); 
 
    
 
    // if you are wanting to first value of the array, you would do 
 
    // console.log(ItemText[0]) which would be either aaa, or dd 
 
}


オプション2:あなたは、個々の引数としてMenuに手渡したすべての値を持つことを期待していた場合apply

を使用して、あなたはapplyに配列をにする必要があります。あなたは再び.splitを適用する必要があります

var text = "aaa,bbb,[email protected],eee,fff" 
 
var itens_menu = text.split('@'); 
 
var item_menu1 = itens_menu[0].split(','); 
 
var item_menu2 = itens_menu[1].split(','); 
 

 
var item = Menu.apply(null, item_menu1); 
 
var item2 = Menu.apply(null, item_menu2); 
 

 

 
function Menu() { 
 
    var ItemText = arguments[0]; 
 
    console.log(ItemText); 
 
}

0
var text = "aaa,bbb,[email protected],eee,fff" 
var itens_menu = text.split(','); 

item = Menu(itens_menu[0]); 
item2 = Menu(itens_menu[1]); 


function Menu() 
{ 
    var ItemText = arguments[0]; 
    alert(ItemText); 
} 
+0

これはOPのコードとどう違うのですか?あなたは '警告 'を追加したようです。あなたがしたこととその理由を説明してください。 –

+0

このコードスニペットは問題を解決するかもしれませんが、[説明を含む](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。また、コードと説明の両方の可読性が低下するため、説明的なコメントを使用してコードを混乱させないようにしてください。 – FrankerZ

0
var 
    text = "aaa,bbb,[email protected],eee,fff", 

    items_menu = text.split('@'), 

    item_menu1 = items_menu[0], 
    item_menu2 = items_menu[1], 

    item = Menu.apply(null, item_menu1.split(',')), 
    item2 = Menu.apply(null, item_menu2.split(',')); 


function Menu(entry1, entry2, entry3) { 

    console.log('arguments[0] : ', arguments[0]); 
    console.log('arguments[1] : ', arguments[1]); 
    console.log('arguments[2] : ', arguments[2]); 

    return { 
     entry1: entry1, 
     entry2: entry2, 
     entry3: entry3 
    }; 
} 


console.log('item : ', item); 
console.log('item2 : ', item2); 
1

、そしてまた、あなたは1つの引数として配列アイテムを渡すことができます:あなたはargumentsオブジェクト参照する場合次に、あなたが戻って文字列値を取得します:

var text = "aaa,bbb,[email protected],eee,fff" 
var itens_menu = text.split('@'); 
var item_menu1 = itens_menu[0].split(','); 
var item_menu2 = itens_menu[1].split(','); 

var item = Menu.apply(null, item_menu1); 
var item2 = Menu.apply(null, item_menu2); 


function Menu() { 
    console.log(arguments); // you'll have all the items as a single argument 

    // so 
    console.log(arguments[0]); 
    //this will return aaa for "item_menu1" and dd for "item_menu2" 
} 
関連する問題