{ id: 1, product_id: 1, pid_name: "Asia", name: "HKG01" },
{ id: 2, product_id: 1, pid_name: "Asia", name: "SH01" },
{ id: 3, product_id: 2, pid_name: "Europe", name: "NY04" },
{ id: 4, product_id: 2, pid_name: "Europe", name: "HK02" },
{ id: 5, product_id: 2, pid_name: "Europe", name: "HK10" },
{ id: 6, product_id: 1, pid_name: "Asia", name: "HKG05" }
前端展示时需要归类展示 ,因此需要构造 类似[{parent: "xx", child: [{xx},{xx}]}] 这样的数据
// 前端处理后的结构
parent: "Asia",
child: [
{ id: 1, product_id: 1, pid_name: "Asia", name: "HKG01" },
{ id: 2, product_id: 1, pid_name: "Asia", name: "SH01" },
{ id: 5, product_id: 1, pid_name: "Asia", name: "HKG05" }
parent: "Europe",
child: [
{ id: 3, product_id: 2, pid_name: "Europe", name: "NY04" },
{ id: 4, product_id: 2, pid_name: "Europe", name: "HK02" },
{ id: 4, product_id: 2, pid_name: "Europe", name: "HK10" }
合并数组对象中key相同的数据
构造 [ { parent: "xx", child: [ { xx }, { xx } ] } ] ,需要传入数据源,匹配合并的键
type MergeByKeyParam<T> = {
dataSource: Array<T>; // 数据源
key: string; // 匹配的键
prop: string; // 匹配的键名
type MergeByKeyResult<T> = {
parent: string;
child: Array<T>;
export const mergeByKey = <T>({ dataSource, key, prop }: MergeByKeyParam<T>): Array<MergeByKeyResult<T>> => {
const dataObj = {};
for (const item of dataSource) {
if (!dataObj[item[key]]) {
dataObj[item[key]] = {
parent: item[prop],
child: []
dataObj[item[key]].child.push(item);
return Object.values(dataObj);
const showRegionList = (regionArr: ICoupon.AvailabilityZone[]) => {
return mergeByKey<ICoupon.AvailabilityZone>({ dataSource: regionArr, key: "pid", prop: "pid_name" });
最终的展示
~~ END ~~
构造 [ { parent: "xx", child: [ { xx }, { xx } ] } ] ,需要传入数据源,匹配合并的键。前端展示时需要归类展示 ,因此需要构造 类似[{parent: "xx", child: [{xx},{xx}]}] 这样的数据。在平常的业务中,后端同学会返回以下类似的结构数据。
Typescript
将动态类型语言的JavaScript变为了静态类型语言。主要是使用了一个tsc编译器。
在终端中使用tsc命令可以将ts文件转化为相应的js文件
tsc xxx.ts
原始数据类型和Any类型
ES中有7种原始类型和一个Object
TS中的Any类型允许赋值为任何类型
数组和元组
TS这里的数组是对元素的类型进行了约束的,类型写在[]前。
let arrNum:number[] = [1,2,3]
这里需要注意的是,伪数组都是有自己特定的类型的
那么在TS中如何将不同
转换命令:
ffmpeg -i "20090401010.mp4" -y -ab 32 -ar 22050 -qscale 10 -s 640*480 -r 15 /opt/a.flv
-i 是 要转换文件名
-y是 覆盖输出文件
-ab 是 音频数据流,大家在百度听歌的时候应该都可以看到 128 64
-ar 是 声音的频率 22050 基本都是这个。
-qscale 是视频输出质量,后边的值越小质量越高,但是输出文件就越“肥”
-s 是输出 文件的尺寸大小!
-r 是 播放侦数。
m3u8自动下载带key合并为ts教程在资源内
加密后的ts文件不能直接合并或播放,需要使用key对每个ts文件进行解密。
分为两种情况:
(1).如果ts文件已经全部下载好,则可以直接在本地通过ffmpeg快速解密合并。
(2).如果ts文件没有下载好,则可以通过vlc直接下载整个视频,或者通过ffmpeg下载并转换。
无论是哪种情况,都要去视频源地址下载m3u8文件。如果可以下载key(有些网站加密方式比较严谨,不那么容易获取到key),把...