当前位置: 首页 > news >正文

深圳网站建设大公司排名江苏做网站的公司有哪些

深圳网站建设大公司排名,江苏做网站的公司有哪些,wordpress注释,宁波seo关键词排名1、方法介绍 数组的成员有时还是数组,Array.prototype.flat()用于将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新数组,对原数据没有影响。 [1, 2, [3, 4]].flat() // [1, 2, 3, 4]上面代码中,原数组的成员里面有一个数…

1、方法介绍

数组的成员有时还是数组,Array.prototype.flat()用于将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新数组,对原数据没有影响。

[1, 2, [3, 4]].flat()
// [1, 2, 3, 4]

上面代码中,原数组的成员里面有一个数组,flat()方法将子数组的成员取出来,添加在原来的位置。

flat()默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。

[1, 2, [3, [4, 5]]].flat()
// [1, 2, 3, [4, 5]][1, 2, [3, [4, 5]]].flat(2)
// [1, 2, 3, 4, 5]

上面代码中,flat()的参数为2,表示要“拉平”两层的嵌套数组。

如果不管有多少层嵌套,都要转成一维数组,可以用Infinity关键字作为参数。

[1, [2, [3]]].flat(Infinity)
// [1, 2, 3]

如果原数组有空位,flat()方法会跳过空位。

[1, 2, , 4, 5].flat()
// [1, 2, 4, 5]

flatMap()方法对原数组的每个成员执行一个函数(相当于执行Array.prototype.map()),然后对返回值组成的数组执行flat()方法。该方法返回一个新数组,不改变原数组。

// 相当于 [[2, 4], [3, 6], [4, 8]].flat()
[2, 3, 4].flatMap((x) => [x, x * 2])
// [2, 4, 3, 6, 4, 8]

flatMap()只能展开一层数组。

// 相当于 [[[2]], [[4]], [[6]], [[8]]].flat()
[1, 2, 3, 4].flatMap(x => [[x * 2]])
// [[2], [4], [6], [8]]

上面代码中,遍历函数返回的是一个双层的数组,但是默认只能展开一层,因此flatMap()返回的还是一个嵌套数组。

flatMap()方法的参数是一个遍历函数,该函数可以接受三个参数,分别是当前数组成员、当前数组成员的位置(从零开始)、原数组。

arr.flatMap(function callback(currentValue[, index[, array]]) {// ...
}[, thisArg])

flatMap()方法还可以有第二个参数,用来绑定遍历函数里面的this。

2、实例应用

增加元素:

// 增加元素
const msgArr = ["it's Sunny in", "California"];const newArr = msgArr.flatMap(i => i.split(' '))
console.log(newArr); //   ["it's", "Sunny", "in", "California"]

删除元素:

// 删除元素
const arr = [1, 2, 3, 4]const newArr = arr.flatMap(x => x % 2 === 0 ? [x]: [])console.log(newArr); // [2, 4]

修改元素:

// 修改元素
const arr = [1, 2, 3, 4]const newArr = arr.flatMap(x => [x * 2])console.log(newArr); // [2, 4, 6, 8]

flatMap方法结合实际场景的使用:
下面我们来看一个实际的例子:例如我们现在有一个选择公司的Select下拉组件,但是后端接口返回的公司列表里面的每一项的字段和我们Select下拉组件需要的字段格式不一样,而且我们还有一个特殊的要求,就是已授权的公司我们才允许在Select下拉组件中选择。这时候我们就想办法遍历公司列表,然后先把未授权的公司过滤掉,然后再把每一项转换成Select下拉组件所需要的数据格式。

这是我们最后展示的公司下拉组件:
在这里插入图片描述
接口返回的公司列表数据结构如下:

	/*** 后端接口返回的公司列表数据:* 	Id: 公司的唯一ID*  Name: 公司名称* 	Authorized: 是否已经授权: 1:已授权,2:未授权* */const studioList = [{Authorized: "2",CompanyType: "1",Id: "3729",Name: "阿我打完的",ServiceProviderId: "6",TenantId: "1",},{Authorized: "1",CompanyType: "1",Id: "3134",Name: "纳税统计-启用时间202101无期初",ServiceProviderId: "6",TenantId: "1",},{Authorized: "1",CompanyType: "1",Id: "427",Name: "美丽人生工作室",ServiceProviderId: "6",TenantId: "1",},{Authorized: "1",CompanyType: "1",Id: "410",Name: "凭证测试专用2",ServiceProviderId: "6",TenantId: "1",}]	

选择公司的Select下拉组件需要的数据格式如下:

    [{text: '公司名称',value: '公司ID'}]

接下来我们就需要把Authorized等于2的过滤掉,然后再转换成Select下拉组件需要的格式,

我们先使用filter配合map来实现:

const filterList = studioList.filter(r => r.Authorized === '1').map(i => ({text: i.Name, value: i.Id}))// 最终也是可以得到我们想要的数据的:[{text: "纳税统计-启用时间202101无期初",value: "3134"},{text: "美丽人生工作室",value: "427"},{text: "凭证测试专用2",value: "410"}]
console.log(filterList);

但是使用filter配合map来实现看起来不是那么简洁易读,下面我们使用flatMap方法来替代:

const filterList = studioList.flatMap(r => r.Authorized === '1' ? [{text: r.Name, value: r.Id}] : [])

最终也是得到一样的结果的,但是flatMap用起来更简洁易读一些。

假设我们有以下购物车:

let cart = [{name: "Smartphone",qty: 2,price: 500,freeOfCharge: false,},{name: "Tablet",qty: 1,price: 800,freeOfCharge: false,},
];

如果客户购买智能手机,我们想给送他们免费的屏幕保护膜。
当客户将智能手机添加到购物车时,我们可以使用 flatMap() 方法将屏幕保护膜添加到购物车,如下所示:

let newCart = cart.flatMap((item) => {if (item.name === "Smartphone") {return [item,{name: "Screen Protector",qty: item.qty,price: 5,freeOfCharge: true,},];} else {return [item];}
});
console.log(newCart);

购物车将如下所示:

[{ name: 'Smartphone', qty: 2, price: 500, freeOfCharge: false },{ name: 'Screen Protector', qty: 2, price: 5, freeOfCharge: true },{ name: 'Tablet', qty: 1, price: 800, freeOfCharge: false }
]

下面使用 reduce() 方法计算购物车中商品的总金额, 它忽略了免费项目,例如屏幕保护膜:

const total = newCart.reduce((sum, item) => {if (!item.freeOfCharge) sum += item.price * item.qty;return sum;
}, 0);
console.log({ total });
http://www.yayakq.cn/news/934882/

相关文章:

  • wordpress没有备案手机优化不足80怎么办
  • 如何搭建微网站美做天然居家居网站
  • 商城网站续费要多少钱下载ps软件免费版2022
  • 公司网站建设意见和建议长白山网站学做管理平台
  • 苏州市城市建设局网站搜索引擎网站推广法
  • 外贸seo推广公司网站做优化的好处
  • 推荐十个网站服务器做内网网站
  • php响应式个人博客网站设计wordpress-seo
  • 做网站所需要的项企业一般用什么邮箱?
  • 网站添加音乐哈尔滨网站备案手续
  • 快速搭建网站 开源德赞网站建设网站制作
  • 晋中网站建设哪家强网站未经授权推广别人的产品
  • 怎么修改网站信息重庆建站网站企业
  • 北京电商网站开发多少钱有官网建手机网站吗
  • 北京建站模板厂家做化妆品注册和注册的网站吗
  • 广告设计在线设计优化方案语文
  • query_posts wordpress两个分类seo如何进行优化
  • 怎么做公司内网网站大足网站建设公司
  • 网站调优商丘做网站优化的公司有哪些
  • 建一个个人网站多少钱爱奇艺做视频网站的
  • 所有的网站建设教程今晚比赛预测比分
  • 菏泽建设局网站做外贸那个网站比较好
  • 网站空间如何买wordpress+修改邮箱
  • 校园网站建设模板网站制作公司网站设计公司
  • 手机端快速建站工具金华做企业网站公司
  • 网站怎么做竞价推广响应式网站不加载图片
  • 社交类网站开发需求分析基金公司网站建设方案
  • 服装网站开发方案swotseo关键词布局
  • 网站需求分析报告范文腾讯做网站
  • 淄博做网站的公司都有哪些自己做视频直播网站