1.数组的降维
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
/*
数组降维:把一个二维数组变成一维数组
*/
//需求:将二维数组转为一维数组 ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
var arr = [['a','b','c'],['d','e','f'],['g','h','i']];
/* 解决方案
(1)遍历arr中的每一个元素(一维数组)
(2)使用concat连接到新数组中
*/
var arr1 = [];
for(var i = 0;i<arr.length;i++){
//连接数组
arr1 = arr1.concat(arr[i]);
};
console.log(arr1);//["a", "b", "c", "d", "e", "f", "g", "h", "i"]
</script>
</body>
</html>
2.数组的升维
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
/* 数组升维:把一维数组变成二维数组 */
//需求 : 将下列数组arr,根据类别type升为二维数组
var arr = [
{
type: '家电',
name: '空调',
price: 5200
},
{
type: '手机',
name: 'iPhone',
price: 7500
},
{
type: '食品',
name: '苹果',
price: 8
},
{
type: '家电',
name: '洗衣机',
price: 2500
}, {
type: '手机',
name: '小米',
price: 2100
}, {
type: '食品',
name: '花生',
price: 5
}, {
type: '食品',
name: '牛奶',
price: 50
}
];
/*
解决方案:
1.创建空对象obj: 找出arr中type的种类和对应的数量 (利用对象属性名唯一的特点)
2.创建空数组arr1 : 存储二维数组
3.遍历arr,根据obj对象,将arr拆分成二维数组存入arr1中
*/
//1.创建空对象: 找出arr中type的种类
var obj = {};
var arr1 = [];
for (var i = 0; i < arr.length; i++) {
var value = arr[i];
if (obj[value.type] == undefined) {//第一次出现
obj[value.type] = 1;//记录次数
var tempArr = [value];//声明数组存储value
arr1.push({ type: value.type, data: tempArr });
} else {//第二次出现,检查这个type是arr1中第几个元素的type
for (var j = 0; j < arr1.length; j++) {
var value1 = arr1[j];
if (value.type == value1.type) {
arr1[j].data.push(value);
}
};
}
};
console.log(obj);//{手机, 家电, 食品}
console.log(arr1);
</script>
</body>
</html>