[英]Javascript create 3 arrays from array
您好我有这个数组: 考虑到此数组可以像以下区域那样增长:提取region [],city []和area []的最佳方法是什么:region5,city5,area5,region6,city6,area6?
谢谢
这是我的处理方式:
var strings = ["city1=Bellevue", "city2=Seattle", "area1=Sound", "area2=Boston"];
var keys = {};
for(var i = 0; i < strings.length; i++)
{
var parse = /^([a-z]+)[0-9]+\=([a-z]+)$/i
var result = parse.exec(strings[i]);
var key = result[1];
var value = result[2];
if(!keys[key]) keys[key] = [];
keys[key].push(value);
}
alert(keys['city']);
alert(keys['area']);
这假设键的顺序无关紧要(我忽略了每个键末尾的数字)。 当然,您可以修改代码以解析出该数字并将其用作数组索引。 我将由您自己决定,希望这至少可以帮助您入门。
我会做这样的事情:
function getData(array){
var cities = [], regions = [], areas = [],
item, i, j, value,
hash = array.slice(5, array.length); //we don't need the first 6 values.
//assuming the data always comes in this order.
hash.sort();//to get values in the right order
for(i= 0, j = hash.length; i<j; i++){
item = hash[i];
value = item.split("=")[1];
if(item.indexOf("a"=== 0)){
areas.push(value);
}
else if(item.indexOf("c"=== 0)){
cities.push(value);
}else if(item.indexOf("r"=== 0)){
regions.push(value);
}
}
return {
areas : areas,
cities : cities,
regions : regions
};
}
var info = ["cities1=Bellevue", "cities2=Seattle", "areas1=Sound", "areas2=Boston", "regions1=Region1", "regions2=Region2"];
var cities = [];
var areas = [];
var regions = [];
for(var i = 0; i < info.length; i++){
var item = info[i];
if(/cities\d+/.test(item)){
cities.push(item.split("=")[1]);
}
else if(/areas\d+/.test(item)){
areas.push(item.split("=")[1]);
}
else if(/regions\d+/.test(item)){
regions.push(item.split("=")[1]);
}
}
假设数组将始终类似于所示示例。 否则,请在拆分项目的位置添加条件检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.