拆分成数组并作为参数传递

split into array and pass as arguments

我有一个字符串,我想将它的一半像函数中的参数一样传递。但是该函数将参数视为整个 piece.Example:aaa,bbb,ccc(3 个参数)但它理解一个参数 'aaa,bbb,ccc'。我该怎么做?

var text = "aaa,bbb,ccc@dd,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];
}
var text = "aaa,bbb,ccc@dd,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);
}

.split() 重复每个值。但是您还需要将正确的变量传递给 Menu。您传递的是 itens_menu[0],但您应该传递的是 item_menu1

选项 1:使用参数

var text = "aaa,bbb,ccc@dd,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:使用 apply

如果您希望将所有值作为单独的参数传递给 Menu,则需要将数组 apply 传递给 Menu。然后当你引用参数对象时,你会得到字符串值:

var text = "aaa,bbb,ccc@dd,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);
}

var
    text = "aaa,bbb,ccc@dd,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);

你应该再次应用 .split,你也可以将 array 项作为单个参数传递:

var text = "aaa,bbb,ccc@dd,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"
}