我有一个数组
var data = new Array("1111_3", "1231_54", "1143_76", "1758_12");
现在我想解析数据[0]以获得1111。
var ids = new Array();
// example: ids = Array("1111", "1231", "1143", "1758");
并将所有ID从数据复制到ids数组。
可以像在php中那样做,还是需要使用循环?
感谢。
答案 0 :(得分:3)
非常简单:
var ids = [];
for(var i = 0, j = data.length; i < j; ++i) {
var idString = data[i];
ids.push(idString.substring(0, idString.indexOf('_')));
}
答案 1 :(得分:2)
优雅:
data.map(function(x){
return x.split('_')[0];
})
这是ECMA-262标准的一部分。
但是,如果您关心支持旧的过时的低级浏览器,请使用jQuery(或您使用的任何其他框架;几乎所有框架都定义了自定义map
功能):
$.map(data, function(x){
return x.split('_')[0];
})
答案 2 :(得分:0)
您想要做的事情称为“地图”。 有些浏览器支持它们,但如果你想要安全,可以使用underscore.js(http://documentcloud.github.com/underscore/)
你最终得到了:
_(data).map(function(x){
return x.split('_')[0];
});
或
_.map(data, function(x){
return x.split('_')[0];
});
答案 3 :(得分:0)
如果你有一个真正大数组,将它连接到字符串并拆分字符串可能会更快,而不是使用任何迭代方法逐个形成它。
var data = ["1111_3", "1231_54", "1143_76", "1758_12"];
var ids= data.join(' ').replace(/_\d+/g,'').split(' ');
alert(ids)
/* returned value: (Array)
1111,1231,1143,1758
*/