繁体   English   中英

Javascript从array创建3个数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM