2016-07-21 27 views
0

Ich habe eine Zeichenfolge, die ich brechen und übergeben möchte die Hälfte davon wie ein Parameter in einer Funktion. Aber die Funktion behandelt den Parameter wie ein ganzes Stück. Beispiel: aaa,bbb,ccc (3 Parameter) aber es versteht einen Parameter 'aaa,bbb,ccc'. Wie mache ich das?in Array aufgeteilt und als Argumente übergeben

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()' wieder? – 4castle

Antwort

4

.split() jeder der Werte wieder. Sie müssen aber auch die richtige Variable an Menu übergeben. Sie passierten in itens_menu[0], aber Sie sollten item_menu1 überschreiten.

Option 1: Verwenden der Argumente

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 
 
}


Option 2: Verwenden apply

Wenn Sie alle Werte Menu als einzelne Argumente übergeben haben, erwarteten , müssten Sie apply das Array zu Menu. Dann, wenn Sie die Argumente Referenzobjekt, würden Sie String-Werte zurück:

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

Wie unterscheidet sich das vom OP-Code? Sieht aus, als hättest du gerade eine "Warnung" hinzugefügt. Bitte erklären Sie, was Sie getan haben und warum. –

+0

Während dieses Code-Snippet die Frage lösen kann, hilft [einschließlich einer Erklärung] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, die Qualität Ihres Posts zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch nicht, Ihren Code mit erläuternden Kommentaren zu überladen, da dies die Lesbarkeit sowohl des Codes als auch der Erklärungen verringert! – 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

Sie .split wieder gelten sollten, und auch können Sie die Array Elemente als einziges Argument übergeben :

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" 
}