js如何将一个数组对象转换成另外一种格式的数组对象

JavaScript08

js如何将一个数组对象转换成另外一种格式的数组对象,第1张

var arr = ["中国|广东|深圳","中国|广东|深圳","中国|湖北|黄石","中国|湖北|武汉","中国|广东|广州","中国|广东|广州","中国|湖北|武汉","中国|福建|福州","中国|福建|厦门"]

        var result={}

        var temp={}

        for(var i=0i<arr.lengthi++){

            var item=arr[i]

            var its=item.split('|')//按|拆分

            var country=its[0]//国家

            var province=its[1]//省

            var city=its[2]//城市

            if(!result[country]){//国家不在结果对象里

                result[country]=[]//添加

            }

            if(!temp[province]){//临时对象没有省信息

                result[country].push(temp[province]={//记入结果数组

                    province:[province],

                    city:[],

                    count:[]

                })

            }

            var info=temp[province]

            var found=false

            for(var j=info.city.length-1j>=0j--){//在省信息的城市数组里查找是否已经存在

                if(info.city[j]==city){

                    found=true//已经存在

                    info.count[j]=info.count[j]+1//更新count

                }

            }

            if(!found){//未找到城市

                info.city.push(city)//添加

                info.count.push(1)//count初始值为1

            }

        }

        console.log(result)

你数据都是现成的 直接创建一个就好了

你如果要把arrYearPay转为{yearPay:100},{yearPay:200}这样键名都一样的对象,还不如直接post数组到后台,反正没有key可辨识,直接通过数组索引判断就是了

给你粗略写个demo

var code = "A123"

var rate = 100

var arrYearPay = [100,200,300]

var data = {

    code: code,

    rate: rate,

    yearPay: arrYearPay

}

var url = './demo.php' //你post地址

$.post(url, data, function (e) {

    alert(e)

})

后台php代码

<?php

$code= $_POST["code"]

$rate= $_POST["rate"]

$yearPay = $_POST["yearPay"] //这个就是数组对象了

$sum = 0 

foreach($yearPay  as $year){

    $sum  += $year * $rate   //这个我随便写的啊 改成你自己的公式了

}

echo $sum

?>

•object 类型:

◦ 创建方式:

/*new 操作符后面Object构造函数*/ var person = new Object()person.name = "lpove"person.age = 21/*或者用对象字面量的方法*/ var person = { name: "lpove"age : 21}

•array类型

◦ 创建方式:

`var colors = new Array(“red”,”blue”,”yellow”)

• 区别和不解

◦ 比如有一个数组a=[1,2,3,4],还有一个对象a={0:1,1:2,2:3,3:4},然后你运行alert(a[1]),两种情况下的运行结果是相同的!这就是说,数据集合既可以用数组表示,也可以用对象表示,那么我到底该用哪一种呢?

我后来才知道,数组表示有序数据的集合,而对象表示无序数据的集合。如果数据的顺序很重要,就用数组,否则就用对象。

当然,数组和对象的另一个区别是,数组的数据没有”名称”(name),对象的数据有”名称”(name)。

但是问题是,很多编程语言中,都有一种叫做”关联数组”(associative array)的东西。这种数组中的数据是有名称的。

• 但是在《javascript DOM》中,不推荐我们使用 关联数组;

◦ 关联数组:

var lpove = Array()lpove[name] = "lei"lpove[age] = 21lpove[living] = true/*对象构造*/ var lpove = Object()lpove.name = "lei"lpove.age = 21lpove.living = true

因为在本质上你创建的关联数组的性质就是Array对象的属性