javascript之数组

news2024/12/25 13:07:20

 

 创建

有以下几种方式

1.构造函数

在使用构造函数时,可以不带new

创建空数组

let color = new Array()
或者let color = Array()

创建指定个数元素的数组

let color = new Array(2)
或者let color = Array(2)

创建指定元素的数组

let color = new Array("black", "white")
或者let color = Array("black", "white")

2.数组字面量

使用数组字面量时,使用逗号会创建空串,默认值是undefined。对于空串,不同的方法作不同的处理,比如map会跳过空串,join会将空串当作空字符串

let color = ["black", "white"]

const options = [,,,,,]
console.log(options.length)  //输出为5
console.log(options)//输出为[ <5 empty items> ]
for (let option of options) {
    console.log(option)
} 
//输出为
undefined
undefined
undefined
undefined
undefined

const options = [1,,,4]
console.log(options.map(x => 6))//输出为[ 6, <2 empty items>, 6 ]

const options = [1,,,4]
console.log(options.join('-'))//输出为1---4

3.静态方法

es6新增了创建数组的静态方法:Array.from和Array.of

Array.from的第一个参数是类数组对象,其第二个参数可选,类型为函数,作用是对于数组元素作映射。也可以接收第三个参数,用于指定映射函数中的this指向

console.log(Array.from("matt")) //输出为[ 'm', 'a', 't', 't' ]

const m = new Map().set(1, 2).set(3, 4)
console.log(Array.from(m)) //输出为[ [ 1, 2 ], [ 3, 4 ] ]


const m = new Set().add(1).add(2).add(3).add(4)
console.log(Array.from(m))//输出为[ 1, 2, 3, 4 ]

const a1 = [1, 2, 3, 4]
const a2 = Array.from(a1)
console.log(Array.from(a2))//输出为[ 1, 2, 3, 4 ]

const iter = {
    *[Symbol.iterator](){
        yield 1;
        yield 2;
        yield 3;
        yield 4;
    }
}
console.log(Array.from(iter))//输出为[1, 2, 3, 4]

function getArgsArray() {
    return Array.from(arguments)
}

console.log(getArgsArray(1, 2, 3, 4))//输出为[1, 2, 3, 4]


const arrayLikeObject = {
    0 : 1,
    1 : 2,
    2 : 3,
    3 : 4,
    length : 4
}
console.log(Array.from(arrayLikeObject))//输出为[ 1, 2, 3, 4 ]

const a1 = [1, 2, 3, 4]
const a2 = Array.from(a1, x => x ** 2)
console.log(a2)//输出为[ 1, 4, 9, 16 ]


const a1 = [1, 2, 3, 4]
const a2 = Array.from(a1, function(x) {
    return x ** this.exponent
}, {exponent : 2})
console.log(a2)//输出为[ 1, 4, 9, 16 ]

 Array.of用于将一组参数转为数组

console.log(Array.of(1, 2, 3, 4)) //输出为[ 1, 2, 3, 4 ]
console.log(Array.of(undefined)) //输出为[ undefined ]

Array.from应用在数组上时,其是浅复制

索引和长度

 数组的索引从下标0开始,索引最大为数组长度-1。在设置时,如果指定的索引超过范围,会将数组的长度修改为索引值+1

如果修改数组的长度改为大于数组元素数,则添加的元素的值为undefined.

let color = ["red", "blue", "green"]
console.log(color.length)  //输出为3
console.log(color[2]) //输出为green
color[3] = "black" //输出为4
console.log(color.length)

let color = ["red", "blue", "green"]
color.length = 2;
console.log(color[2]);//输出为undefined
let color = ["red", "blue", "green"]
color.length = 4;
console.log(color[3]);//输出为undefined

数组最大长度为4294967295,如果超过,会报错

let colors = new Array(4294967296);
或者
let colors = ["red", "blue", "green"]
colors.length = 4294967296;

会抛出
RangeError: Invalid array length
    at Object.<anonymous> (f:\my_git_hub\OJ\vue\test.js:1:14)
    at Module._compile (node:internal/modules/cjs/loader:1103:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1155:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
    at node:internal/main/run_main_module:17:47

检测数组

使用静态方法Array.isArray

let colors = ["red", "blue", "green"]
console.log(Array.isArray(colors))  //输出为true

let colors = {a : 1}
console.log(Array.isArray(colors))//输出为false

迭代器方法

keys():返回数组索引的迭代器

values():返回数组元素的迭代器

entries():返回索引/元素对的迭代器

const a = ["foo", "bar", "baz", "qux"] 
console.log(Array.from(a.keys()))//输出[ 0, 1, 2, 3 ]
console.log(Array.from(a.values()))//输出[ 'foo', 'bar', 'baz', 'qux' ]
console.log(Array.from(a.entries()))//输出[ [ 0, 'foo' ], [ 1, 'bar' ], [ 2, 'baz' ], [ 3, 'qux' ] ]

填充和复制

填充使用fill,其中开始索引参数是可选的,索引支持负值。在有结束索引参数时,是不包含结束位置的。在索引区间偏低或者偏高,填充操作被忽略。同时如果结束索引小于开始索引时,填充操作也被忽略。对于 索引区间部分可用情况时,只填充可用部分

const zeros = [0, 0, 0, 0, 0]
zeros.fill(5)
console.log(zeros) //输出为[ 5, 5, 5, 5, 5 ]
zeros.fill(0)

zeros.fill(5, 3)
console.log(zeros)//输出为[ 0, 0, 0, 5, 5 ]
zeros.fill(0)

zeros.fill(5, 1, 3)
console.log(zeros)//输出为[ 0, 5, 5, 0, 0 ]
zeros.fill(0)

zeros.fill(5, -4, -1)
console.log(zeros)//输出为[ 0, 5, 5, 5, 0 ]
zeros.fill(0)

zeros.fill(5, -10, -6)
console.log(zeros)//输出为[ 0, 0, 0, 0, 0 ]
zeros.fill(0)

zeros.fill(5, 6, 10)
console.log(zeros)//输出为[ 0, 0, 0, 0, 0 ]
zeros.fill(0)

zeros.fill(5, 6, 5)
console.log(zeros)//输出为[ 0, 0, 0, 0, 0 ]
zeros.fill(0)

zeros.fill(5, 3, 6)
console.log(zeros)//输出为[ 0, 0, 0, 5, 5 ]
zeros.fill(0)

复制使用copyWithin,复制指定范围内的元素,填充到指定索引开始的位置,与fill一样,也支持负索引,对于索引区间过低,过高,或者负长度区间忽略,对于部分区间可用的,复制可用部分

let ints, reset = () => ints = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
reset()

ints.copyWithin(5)
console.log(ints)
reset()
//输出为
[
  0, 1, 2, 3, 4,
  0, 1, 2, 3, 4
]

ints.copyWithin(5, 3)
console.log(ints)
reset()
//输出为
[
  0, 1, 2, 3, 4,
  3, 4, 5, 6, 7
]

ints.copyWithin(5, 3, 6)
console.log(ints)
reset()
//输出为
[
  0, 1, 2, 3, 4,
  3, 4, 5, 8, 9
]

ints.copyWithin(-4, -7, -3)
console.log(ints)
reset()
//输出为
[
  0, 1, 2, 3, 4,
  5, 3, 4, 5, 6
]

ints.copyWithin(5, -15, -10)
console.log(ints)
reset()
//输出为
[
  0, 1, 2, 3, 4,
  5, 6, 7, 8, 9
]

ints.copyWithin(5, 10, 15)
console.log(ints)
reset()
//输出为
[
  0, 1, 2, 3, 4,
  5, 6, 7, 8, 9
]

ints.copyWithin(5, 10, 9)
console.log(ints)
reset();
//输出为
[
  0, 1, 2, 3, 4,
  5, 6, 7, 8, 9
]

ints.copyWithin(5, 7, 15)
console.log(ints)
reset();
//输出为
[
  0, 1, 2, 3, 4,
  7, 8, 9, 8, 9
]

转换

toString:通过调用数组元素的toString得到字符串,然后使用逗号分隔符将所有字符串拼接

valueOf:返回数组本身

toLocaleString:调用数组元素的toLocalString得到字符串,然后用逗号分隔符拼接

join:用分隔符将数据拼接,在不传参数情况下或者传参为undefined,默认是使用逗号分隔符

对于 数组元素中有null或者undefined,toString,toLocaleString,join会将其作为空字符串来处理

let colors = ["red", "blue", "green"]
console.log(colors.toString()) //输出red,blue,green
console.log(colors.valueOf()) //输出[ 'red', 'blue', 'green' ]

let person1 = {
    toLocaleString() {
        return "Nikolaos";
    },

    toString() {
        return "Nicholas";
    }
};

let person2 = {
    toLocaleString() {
        return "Grigorios";
    },

    toString() {
        return "Greg";
    }
};


let people = [person1, person2]
console.log(people.toString()) //输出为Nicholas,Greg
console.log(people.toLocaleString())//输出为Nikolaos,Grigorios

let colors = ["red", "blue", "green"]
console.log(colors.join()) //输出为red,blue,green
console.log(colors.join(","))//输出为red,blue,green
console.log(colors.join("||"))//输出为red||blue||green
console.log(colors.join(undefined))//输出为red,blue,green

let colors = ["red", null, "blue", undefined, "green"]
console.log(colors.toString()) //输出为red,,blue,,green
console.log(colors.toLocaleString())//输出为red,,blue,,green
console.log(colors.join())//输出为red,,blue,,green

栈方法

push:将元素入栈,参数可以为任意个,返回是数组的长度

pop:从栈上弹出最后一个元素

let colors = new Array()
let count = colors.push("red", "blud")
console.log(count) //输出为2
count = colors.push("black")
console.log(count)//输出为3
let item = colors.pop()
console.log(item, colors.length)//输出为black 2

队列方法

shift:配合push来使用,是删除数组中的第一个并且返回该元素,数组长度减1

unshift:配合pop来使用,在数组的第一个位置添加元素,元素个数可以是任意个,并且返回数组长度

let colors = new Array()
let count = colors.push("red", "green")
console.log(count) //输出为2
count = colors.push("blue")
console.log(count)//输出为3
let item = colors.shift()
console.log(item)//输出为red
console.log(colors.length)//输出为2


let colors = new Array()
let count = colors.unshift("red", "green")
console.log(count)//输出为2
count = colors.unshift("blue")
console.log(count)//输出为3
let item = colors.pop()
console.log(item)//输出为green
console.log(colors.length)//输出为2

排序方法

reverse:将数组反向排序

sort:将数组根据比较规则排序,默认是按升序排列,对每个元素会调用String转型函数转为字符串再比较 ,可以接受比较函数

reverse和sort返回的是原数组的引用

let values = [1, 2, 3, 4, 5]
console.log(values.reverse()) //输出为[ 5, 4, 3, 2, 1 ]

let values = [0, 1, 5, 10, 15]
console.log(values.sort())//输出为[ 0, 1, 10, 15, 5 ]

let values = [0, 1, 5, 10, 15]
function compare(value1, value2) 
{
    if (value1 < value2) {
        return -1
    } else if (value1 > value2) {
        return 1
    } else {
        return 0
    }
}
console.log(values.sort(compare)) //输出为[ 0, 1, 5, 10, 15 ]
let afterSort = values.sort(compare)
console.log(afterSort === values)  //输出为true
let afterReverse = values.reverse();
console.log(afterReverse === values)//输出为true

操作方法

concat:拼接成新数组,对原数组无影响。在拼接参数中,如果有参数类型为数组,而希望数组作为单个元素拼接,则需要将参数数组的Symbol.isConcatSpreadable设置为false

slice:根据起始和结束位置创建包含原数组对应元素的新数组,对原数组无影响 ,如果结束位置小于开始位置,返回空数组

splice:可以对数组添加(传3个参数,开始位置,0,要插入的元素),删除(2个参数,开始位置,要删除的元素个数),替换

let colors = ["red", "green", "blue"]
let colors2 = colors.concat("yello", ["black", "brown"])
console.log(colors) //输出为[ 'red', 'green', 'blue' ]
console.log(colors2)//输出为[ 'red', 'green', 'blue', 'yello', 'black', 'brown' ]



let colors = ["red", "green", "blue"]
let newColors = ["black", "brown"]
let moreNewColors = {
    [Symbol.isConcatSpreadable] : true,
    length: 2,
    0: "pink",
    1: "cyan"
};
newColors[Symbol.isConcatSpreadable] = false
let colors2 = colors.concat(newColors)
console.log(colors2)
//输出为
[
  'red',
  'green',
  'blue',
  [ 'black', 'brown', [Symbol(Symbol.isConcatSpreadable)]: false ]
]
let colors3 = colors.concat(moreNewColors)
console.log(colors3)
//输出为
[ 'red', 'green', 'blue', 'pink', 'cyan' ]


let colors = ["red", "green", "blue", "yellow", "purple"]
let colors2 = colors.slice(1)
let colors3 = colors.slice(1, 4)
console.log(colors2)//输出为[ 'green', 'blue', 'yellow', 'purple' ]
console.log(colors3)//输出为[ 'green', 'blue', 'yellow' ]


let colors = ["red", "green", "blue"]
let removed = colors.splice(0, 1)
console.log(colors)//输出为[ 'green', 'blue' ]
console.log(removed)//输出为[ 'red' ]

removed = colors.splice(1, 0, "yelllow", "orange")
console.log(colors) //输出为[ 'green', 'yelllow', 'orange', 'blue' ]
console.log(removed) //输出为[]

removed = colors.splice(1, 1, "red", "purple")
console.log(colors) //输出为[ 'green', 'red', 'purple', 'orange', 'blue' ]
console.log(removed)//输出为[ 'yelllow' ]

搜索和位置方法

indexOf:第一个参数是要查找的元素,第二个为可选参数,表示开始搜索位置,返回要查找元素在数组中的下标,没有找到时返回 -1。从开始位置向后查找

lastIndefOf:第一个参数是要查找的元素,第二个为可选参数,表示开始搜索位置,返回要查找元素在数组中的下标,没有找到时返回 -1。从数组尾开始向前查找

includes:第一个参数是要查找的元素,第二个为可选参数,表示开始搜索位置,数组中可以找到返回true,否则返回false

find和findIndex:第一个参数是断言函数,断言函数接收三个参数(element, index ,array),第二个参数表示断言函数内this的指向

let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1]
console.log(numbers.indexOf(4))  //输出为3
console.log(numbers.lastIndexOf(4))//输出为5
console.log(numbers.includes(4))//输出为true

console.log(numbers.indexOf(4, 4))//输出为5
console.log(numbers.lastIndexOf(4, 4))//输出为3
console.log(numbers.includes(4, 7))//输出为false

let person = {name : "Nicholas"}
let people = [{name : "Nicholas"}]
let morePeople = [person]
console.log(people.indexOf(person))//输出为-1
console.log(morePeople.indexOf(person))//输出为0
console.log(people.includes(person))//输出为false
console.log(morePeople.includes(person))//输出为true

const people = [
    {
        name: "Matt",
        age: 27
    },
    {
        name: "Nicholas",
        age: 29
    }
];

console.log(people.find((element, index, array) => element.age < 28)) 
//输出为{ name: 'Matt', age: 27 }
console.log(people.findIndex((element, index, array) => element.age < 28))//输出为0

迭代方法

every:数组中的每项都满足函数要求,则返回true
some:数组中只要有一项满足函数要求,则返回 true
filter:返回满足函数要求的元素组成的数组

map:数组中的每项都运行函数,新的元素组组成新的数组

forEach:数组中的每项都运行函数,无返回值

let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1]
let everyResult = numbers.every((element, index, array) => element > 2)
console.log(everyResult) //输出为false
let someResult = numbers.some((element, index, array) => element > 2)
console.log(someResult)//输出为true
let filterResult = numbers.filter((element, index, array) => element > 2)
console.log(filterResult)//输出为[ 3, 4, 5, 4, 3 ]
let mapResult = numbers.map((element, index, array) => element * 2)
console.log(mapResult)
//输出为
[
  2, 4, 6, 8, 10,
  8, 6, 4, 2
]
numbers.forEach((element, index, array) => console.log(element))
//输出为
1
2
3
4
5
4
3
2
1

归并方法

reduce:从数组第一项开始遍历到最后一项

reduceRight:从数组最后一项遍历到第一项

let numbers = [1, 2, 3, 4, 5]
let sum = numbers.reduce((prev, cur, index, array) => prev + cur)
console.log(sum) //输出为15
let rightSum = numbers.reduceRight((prev, cur, index, array) => prev + cur)
console.log(rightSum)//输出为15

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/439297.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

atio函数和宏offset的介绍

目录 前言atoi函数宏offsetof总结 前言 本章带大家一起认识一些在我们C语言标准库中的函数 atoi函数 int atio(const char* str);头文件&#xff1a; #include<stdlib.h>参数&#xff1a; str指向常量字符串起始位置的指针 函数介绍&#xff1a; ①解析C语言字符串str,…

2023软件测试工程师必备技能?要卷,谁还不会了......

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 软件测试岗位是怎…

FPGA基于Tri Mode Ethernet MAC实现UDP通信 提供3套工程源码和技术支持

目录 1、前言2、我这里已有的UDP方案3、米联客UDP协议栈4、详细设计方案5、Tri Mode Ethernet MAC的使用6、vivado工程1详解7、vivado工程2详解8、vivado工程3详解9、上板调试验证并演示10、福利&#xff1a;工程代码的获取 1、前言 目前网上的fpga实现udp基本生态如下&#x…

Spring Security实战(五)—— 密码加密

一、密码加密的演进 MD5 (Message-Digest Algorithm 5) 和 SHA (Secure Hash Algorithm) 是两种常见的消息摘要算法&#xff0c;它们都被用于加密和数据完整性验证等领域。 MD5 是一种 128 位的哈希函数&#xff0c;常用于数据完整性校验和数字签名等方面。它将任意长度的信息…

WebServer项目(四)->(基于Proactor的c++)Web服务器简介及简单实现

基于Proactor的cWeb服务器项目 WebServer项目(四)-&#xff1e;(基于Proactor的c)Web服务器简介及简单实现1.Web Server&#xff08;网页服务器&#xff09;2.HTTP协议(应用层的协议)3.HTTP 请求报文格式4.HTTP响应报文格式5.HTTP请求方法6.HTTP状态码7.服务器编程基本框架8.两…

分布式搜索技术elasticsearch概念篇

文章目录 一、分布式搜索技术二、elasticsearch2.1 初识elasticsearch2.2 正向索引和倒排索引2.2.1 介绍2.2.2 优缺点 2.3 elasticsearch和mysql的对比 一、分布式搜索技术 分布式搜索技术是一种基于分布式计算的搜索引擎技术&#xff0c;它使用多台计算机协同工作来处理大规模…

ElementUI登陆表单中常用的标签属性

ElementUI官网 为登陆框添加一个边角弧度 <style> .className{/*设置div边边框角的弧度*/border-radius: 10px; } </style><el–input>标签常用属性 <!--使用prefix属性添加一个前缀图标--> <el-input prefix-icon"el-icon-user-solid"&g…

深度学习第J6周:ResNeXt-50实战解析

目录 一、模型结构介绍 二、前期准备 三、模型 三、训练运行 3.1训练 3.2指定图片进行预测 &#x1f368; 本文为[&#x1f517;365天深度学习训练营]内部限免文章&#xff08;版权归 *K同学啊* 所有&#xff09; &#x1f356; 作者&#xff1a;[K同学啊] &#x1f4cc; …

大数据技术之集群数据迁移

在大数据集群数据迁移的项目中涉及到很多技术细节&#xff0c;本博客记录了迁移的大致的操作步骤。 迁移借用Hadoop自带的插件&#xff1a;distcp。 一、Hadoop集群数据迁移 **DistCp&#xff08;分布式拷贝&#xff09;**是用于大规模集群内部和集群之间拷贝的工具。它使用M…

Meson构建系统的使用

一、前言 Meson 是用于自动化构建的自由软件&#xff0c;使用Python语言编写&#xff0c;在 Apache 许可证 2.0版本下发布&#xff0c;主要目标是为了让开发者节约用于配置构建系统的时间。 特点如下&#xff1a; 多平台支持&#xff0c;包括 GNU/Linux、Windows、MacOS、GCC、…

A_A01_008 STM32F103系列标准库移植经验分享

A_A01_008 STM32F103系列标准库移植经验分享 一、所需材料二、移植步骤三、注意事项四、参考资料与友情链接 一、所需材料 1.MDK开发环境 此处版本V5.15 2.相关启动文件 此处用野火点灯例程 因为启动文件完整 方便更换 其它工程没有的可以直接复制这些启动文件过去 3.相关开…

Java版工程管理系统源代码-软件自主研发,工程行业适用

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…

8年测开年薪30W,为什么从开发转型为测试?谈谈这些年的心路历程……

谈谈我的以前&#xff0c;从毕业以来从事过两个多月的Oracle开发后转型为软件测试&#xff0c;到现在已近过去8年成长为一个测试开发工程师&#xff0c;总结一下之间的心路历程&#xff0c;希望能给徘徊在开发和测试之前的同学一点小小参考。 一、测试之路伏笔 上学偷懒&#…

EGO-Link FPGA智慧教育社区介绍:用 leetcode 的方式练习 verilog 语言

文章目录 介绍FPGA 语法例1&#xff1a;P1203 1输入1输出例2&#xff1a;P1204 3输入4输出例3&#xff1a;P1207 P1208 P1205 与或非门例4&#xff1a;P1200 半加器例5&#xff1a;P1201 4位二进制转余3循环码例6&#xff1a;P1215 2选1多路选择器例7&#xff1a;P1236 D触发器…

【C语言】浅涉结构体(声明、定义、类型、定义及初始化、成员访问及传参)

简单不先于复杂&#xff0c;而是在复杂之后。 目录 1. 结构体的声明 1.1 结构体的基础知识 1.2 结构的声明 1.3 结构成员的类型 1.4 结构体变量的定义和初始化 2. 结构体成员的访问 3. 结构体传参 1. 结构体的声明 1.1 结构体的基础知识 结构是一些值的集合&…

探索Apache Hudi核心概念 (4) - Clustering

Clustering是Hudi在0.7.0版本引入的一项特性&#xff0c;用于优化文件布局&#xff0c;提升读写性能&#xff0c;现在它已经成为Hudi的一项重要性能优化手段。本文我们会通过Notebook介绍并演示Clustering的运行机制&#xff0c;帮助您理解其工作原理和相关配置。 1. 运行 Not…

RocketMQ 多级存储设计与实现

作者&#xff1a;张森泽 随着 RocketMQ 5.1.0 的正式发布&#xff0c;多级存储作为 RocketMQ 一个新的独立模块到达了 Technical Preview 里程碑&#xff1a;允许用户将消息从本地磁盘卸载到其他更便宜的存储介质&#xff0c;可以用较低的成本延长消息保留时间。本文详细介绍 …

记录贴:EasyPoi word导出问题一览

项目场景&#xff1a; EasyPoi word导出 问题描述1 easypoi 模板导出 我直接在map的value输入空格或"",出来的是{{,两个左花括号,咋解决 解决方案&#xff1a; exportMap.put("key", "\u00A0"); //空格前端效果&#xff1a; 其他无效解决方案…

Redis安装配置操作记录

Redis 官网&#xff1a;https://redis.io/ 中文文档&#xff1a;https://www.redis.com.cn/documentation.html 在线命令参考&#xff1a;http://doc.redisfans.com 一&#xff0c;Redis下载安装与配置 下载网站&#xff0c;可下载安装包然后安装或可使用brew来安装Redis&#…

LeetCode——前K个高频单词

692. 前K个高频单词 给定一个单词列表 words 和一个整数 k &#xff0c;返回前 k 个出现次数最多的单词。 返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率&#xff0c; 按字典顺序 排序。 示例 1&#xff1a; 输入: words [“i”, “love”, “le…