工作笔记--JS相关

1.Object.values(es6)

Object.values方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值。

const obj = { foo: 'bar', baz: 42 };
Object.values(obj)
// ["bar", 42]

2.Set

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

Set 本身是一个构造函数,用来生成 Set 数据结构。

const s = new Set();
[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));
for (let i of s) {
  console.log(i);
}
// 2 3 5 4

上面代码通过add方法向 Set 结构加入成员,结果表明 Set 结构不会添加重复的值。

Set 函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化。

// 例一
const set = new Set([1, 2, 3, 4, 4]);
[...set]
// [1, 2, 3, 4]

// 例二
const items = new Set([1, 2, 3, 4, 5, 5, 5, 5]);
items.size // 5

// 例三
function divs () {
  return [...document.querySelectorAll('div')];
}

const set = new Set(divs());
set.size // 56

// 类似于
divs().forEach(div => set.add(div));
set.size // 56

上面代码中,例一和例二都是Set函数接受数组作为参数,例三是接受类似数组的对象作为参数。

3.map

map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。

// ES6
let numbers = [1, 5, 10, 15];
let doubles = numbers.map( x => x ** 2);

// doubles is now [1, 25, 100, 225]
// numbers is still [1, 5, 10, 15]


const numbers = [2, 4, 8, 10];
let halves = numbers.map(x => x / 2);

let numbers = [1, 4, 9];
let roots = numbers.map(Math.sqrt);
// roots is now [1, 2, 3]
// numbers is still [1, 4, 9]

4.Array.from()

Array.from() 方法从一个类似数组或可迭代对象中创建一个新的数组实例。

Array from a String
Array.from('foo'); 
// ["f", "o", "o"]

Array from a Set
let s = new Set(['foo', window]); 
Array.from(s); 
// ["foo", window]

Array from a Map
let m = new Map([[1, 2], [2, 4], [4, 8]]);
Array.from(m); 
// [[1, 2], [2, 4], [4, 8]]

Array from an Array-like object (arguments)
function f() {
  return Array.from(arguments);
}
f(1, 2, 3);
// [1, 2, 3]

Using arrow functions and Array.from
// Using an arrow function as the map function to
// manipulate the elements
Array.from([1, 2, 3], x => x + x);      
// [2, 4, 6]

// Generate a sequence of numbers
// Since the array is initialized with `undefined` on each position,
// the value of `v` below will be `undefined`
Array.from({length: 5}, (v, i) => i);
// [0, 1, 2, 3, 4]

5.findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。

function isBigEnough(element) {
  return element >= 15;
}

[12, 5, 8, 130, 44].findIndex(isBigEnough); 
//  '3'

6.sort() 方法

sort() 方法用于对数组的元素进行排序。
arrayObject.sort(sortby)

7.按照规定的顺序排序

下面例子实现的功能是:获取到的复选框如果有roomTypesTemp 里面的值,就必须按照roomTypesTemp 里面的顺序排序,如果没有,则放在后面

// 得到复选框里面的值
            getcheckedRoomType:function(){
                let self = this;
                let app = jtl.app.Base.getApp();
                let typeNumber = app.floorplan.globalEnvironment;
                let roomTypesTemp = [];
                if(typeNumber == 4){//洋房
                    roomTypesTemp = ['客厅','餐厅','客餐厅','主卧','卧室一','卧室二','卧室三','卧室四','卧室五','多功能房','书房','衣帽间','厨房','主卫','公卫','工卫','卫生间前室'];
                }else{//公区
                    roomTypesTemp = ['大堂','电梯厅','电梯厅一','电梯厅二','门廊','门斗','入户前室一','入户前室二'];
                }
                let rooms = Object.values(app.floorplan.rooms);
                let roomNameList = new Set();
                for (let room of rooms) {
                    let roomTypeText = ResourceManager.getString('model_roomtype_' + room.roomType);
                    if (roomTypeText === undefined) {
                        roomTypeText = room.roomType;
                    }
                    roomNameList.add(roomTypeText);
                } 
                console.log(roomNameList);
                if(typeNumber == 4){
                    ['客厅','餐厅','客餐厅'].forEach(_ => roomNameList.add(_));
                }
                roomNameList = [...roomNameList].sort((a, b) => {
                    a = roomTypesTemp.findIndex(_ => _ === a);
                    if (a < 0) a = Infinity;
                    b = roomTypesTemp.findIndex(_ => _ === b);
                    if (b < 0) b = Infinity;
                    return a - b;
                });
                self.roomTypes = roomNameList;
            },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值