2016-11-09 59 views
-1

一定的模式后,我已经得到的变量,如酒店标签去掉一切(8)和瑜伽标签(4)如何的jQuery或JavaScript

是否有可能得到的值作为酒店标签瑜伽标签

var myarray = ["hotel tag (8)", "yoga tag (4)"]; 
var newarray = []; 

$(document).ready(function() { 
    for (var i = 0; i < myarray.length; i++) { 
     var tag_name = myarray[i].split('(').pop() 
     newarray.push(tag_name); 
    } 
    console.log(newarray); 
}); 

我曾尝试使用splitpop,但我得到不正确的结果。

http://jsfiddle.net/cod7ceho/303/

+1

变量来自哪里?你不能在源头修改它们的值吗? –

回答

0

你可以使用正则表达式和搜索第一个非开放bracked部分。

var myarray = ["hotel tag (8)", "yoga tag (4)"]; 
 
myarray.forEach(function (a) { 
 
    console.log(a.match(/^[^(]+/)[0].trim()); 
 
});

或者使用正向前查找与之相匹配的

var myarray = ["hotel tag (8)", "yoga tag (4)"]; 
 
myarray.forEach(function (a) { 
 
    console.log(a.match(/^.*(?=\s\()/)[0]); 
 
});

或者使用与分裂

积极前瞻

var myarray = ["hotel tag (8)", "yoga tag (4)"]; 
 
myarray.forEach(function (a) { 
 
    console.log(a.split(/(?=\s\()/)[0]); 
 
});

1

你接近。

其实Array.prototype.pop()从数组中删除最后一个元素并返回该元素。所以,你在你的tag_name内部存储这最后一个元素,并将其添加到newarray

var myarray = ["hotel tag (8)", "yoga tag (4)"]; 
 
var newarray = []; 
 

 
for (var i = 0; i < myarray.length; i++) { 
 
    var tag_name = myarray[i].split('(')[0].trim(); 
 
    newarray.push(tag_name); 
 
} 
 
console.log(newarray);

OR

如果你想保持相同的逻辑。您可以使用Array.prototype.shift(),它将从数组中移除第一个元素并返回该元素。

var myarray = ["hotel tag (8)", "yoga tag (4)"]; 
 
var newarray = []; 
 

 
for (var i = 0; i < myarray.length; i++) { 
 
    var tag_name = myarray[i].split('(').shift().trim(); 
 
    newarray.push(tag_name); 
 
} 
 
console.log(newarray);

注:我添加的方法trim()除去开头和结尾的空白

0

有亚去:

var data = ["hotel tag (8)", "yoga tag (4)"]; 
 

 
var result = data.map(function(str){ 
 
    return str.split('(')[0].trim(); 
 
}); 
 

 
console.log(result);

它没有比这更简单。

对于每个元素:在(.split('(')

  1. 分裂它,
  2. 得到的第一部分([0]),
  3. 删除尾部空格与.trim()