草庐IT

可变数组

全部标签

javascript - 如何根据 JavaScript 中另一个数组的索引从一个数组中选择元素?

这行得通,但我想知道是否有更好的方法来按索引过滤:a=[10,20,30,40]b=[1,3]a.filter((x,i)=>b.includes(i))//[20,40] 最佳答案 另一种方法是b.map(aIndex=>a[aIndex])。如果b比a短,这也可能更快。但是,如果b中有不属于a的索引,您最终会在数组中得到undefined“空洞”。编辑仔细查看Array.includes,对于未排序的数组,它看起来会在O(n)中运行。如果我们说A=a.length和B=b.length,您的问题解决方案应该在O(A*B)内运行.

javascript - TypeScript 返回不可变/常量/只读数组

我想要一个返回数组的函数,但我希望返回的数组是只读的,所以当我尝试更改其内容时应该会收到警告/错误。functiongetList():readonlynumber[]{return[1,2,3];}constlist=getList();list[2]=5;//Thisshouldresultinacompileerror,thereturnedlistshouldneverbechanged这可以在TypeScript中实现吗? 最佳答案 这似乎可行...functiongetList():ReadonlyArray{retur

javascript - 如何检查 JavaScript 数组是否仅包含两个特定值

这个问题在这里已经有了答案:Howtoknowiftwoarrayshavethesamevalues(32个答案)关闭4年前。我需要检查一个数组是否包含两个值并且只包含它们。这是我现在丑陋的解决方案:if(myArray.includes('foo')&&myArray.includes('bar')&&myArray.length===2){//Dosomething}更新:我可能还需要检查三个或更多值。任何优雅的解决方案?顺便说一下,我正在使用Lodash在这个项目中。

Javascript,知道某个值是否在数组中的最快方法?

这个问题在这里已经有了答案:关闭10年前。社区在5个月前审查了是否重新打开这个问题,然后将其关闭:原始关闭原因未解决PossibleDuplicate:array.contains(obj)inJavaScript假设我有一个数组=[0,8,5]知道8是否在这个里面的最快方法是什么..例如:if(array.contain(8)){//returntrue}我发现了这个:Fastestwaytocheckifavalueexistinalist(python)还有这个:fastestwaytodetectifavalueisinasetofvaluesinJavascript但这并没有

javascript readAsArrayBuffer 返回空数组缓冲区

我正在尝试使用FileReaderreadAsArrayBuffer属性读取本地文件。读取成功,在“onload”回调中,我在reader.result中看到ArrayBuffer对象。但是数组缓冲区只是空的。长度已设置,但数据未设置。我如何获得这些数据?这是我的代码functionhandleFileSelect(evt){varfiles=evt.target.files;//FileListobjectvarselFile=files[0];varreader=newFileReader();reader.onload=function(e){console.log(e.targ

javascript - 用实际变量名/字符串替换数组映射变量?

我正在尝试编辑Greasemonkey/jQuery脚本。我不能在这里发布链接。代码使用minify进行了混淆和压缩。它是这样开始的:var_0x21e9=["\x67\x65\x74\x4D\x6F\x6E\x74\x68","\x67\x65\x74\x55\x54\x43\x44\x61\x74\x65",...“解码”后,我得到了这个:var_0x21e9=["getMonth","getUTCDate","getFullYear",...这是一个巨大的列表(500+)。然后,它有一些像这样的变量:month=date[_0x21e9[0]](),day=date[_0x21e

javascript - 限制 .split() 拆分的次数,而不是 chop 结果数组

真的,就像标题所说的那样。假设你有这个字符串:vartheString="a=b=c=d";现在,当您运行theString.split("=")时,结果是["a","b","c","d"]正如预期的那样。当然,当您运行theString.split("=",2)时,您会得到["a","b"],在阅读theMDNpageforString#split()之后对我来说很有意义。但是,我正在寻找的行为更像是Java的String#split():不是正常构建数组,然后返回前n个元素,它构建一个包含前n-1个匹配项的数组,然后将所有剩余字符添加为数组的最后一个元素。参见therelevant

javascript - 如何使用 Lodash 将数组分成多个组?

我试图找到一种简洁的方法,根据谓词将对象数组划分为数组组。vararr=[{id:1,val:'a'},{id:1,val:'b'},{id:2,val:'c'},{id:3,val:'a'}];//transformtobelowvarpartitionedById=[[{id:1,val:'a'},{id:1,val:'b'}],[{id:2,val:'c'}],[{id:3,val:'a'}];我看到thisquestion,它使用纯JS给出了一个很好的概述,但我想知道是否有更简洁的方法使用lodash来做到这一点?我看到partitionfunction但它只将数组分成2组(需

javascript - 使用 map 函数在 JavaScript 中创建关联数组

我有一个具有以下格式的对象数组[{'list':'one','item':1},{'list':'one','item':2},{'list':'one','item':3},{'list':'two','item':1},{'list':'two','item':2}]我想这样改造[{'one':[1,2,3]},{'two':[1,2]}]如何使用Array.map函数来实现?这是最好的选择吗? 最佳答案 您可以使用Array.prototype.reduce来完成您的任务。它允许在回调函数中为下一次调用返回值。vardata=

JavaScript 数组减少从索引开始

这个问题已经困扰我一段时间了,我似乎无法在网络上找到答案。是否可以使用Arrayreduce方法从某个索引开始?简单的例子varstudentGrades=["JohnDoe","SomeSchool",6,7,8,7,9,9];如果我只需要遍历studentGrades中的整数,我可以使用一个简单的for循环来实现for(vari=2;i但假设我需要得到一个平均成绩,即所有整数的总和除以整数计数。如果Array只包含整数,那么使用reduce就没有问题。varonlyIntegersArr=[5,2,3,4];varaverageGrade=onlyIntegersArr.reduc