Javascript 根据值将键映射到数组中
根据基于值条件的值将键映射到数组中最有效的方法是什么 例如,我有一个映射,其中包含文件对象作为键,布尔值作为值,如下所示:Javascript 根据值将键映射到数组中,javascript,typescript,dictionary,angular6,Javascript,Typescript,Dictionary,Angular6,根据基于值条件的值将键映射到数组中最有效的方法是什么 例如,我有一个映射,其中包含文件对象作为键,布尔值作为值,如下所示: map = new Map([ [file, true], [file1, true], [file2, false], [file3, true], ]); 如果map value==true,我可以问一下创建文件对象数组的快捷方式是什么吗 预期结果 files=[file,file1,file3] 谢谢你的帮助,谢谢 您可以使用条目获取映射的键
map = new Map([
[file, true],
[file1, true],
[file2, false],
[file3, true],
]);
如果map value==true,我可以问一下创建文件对象数组的快捷方式是什么吗
预期结果
files=[file,file1,file3]代码>
谢谢你的帮助,谢谢 您可以使用条目
获取映射的键和值,然后根据值(条件)是否为真对其进行过滤
,然后.map
将[键,值]
转换为键:
const map=新映射([
['file',true],
['file1',true],
['file2',false],
['file3',true],
]);
常量文件=[…map.entries()]
.filter(([[uu,cond])=>cond)
.map(([key])=>key);
console.log(文件)代码>在这里,一个简单的forEach循环就可以做到这一点
const map=新映射([
['test',true],
['test2',true],
['test3',false],
['test4',true],
]);
常量文件=[];
map.forEach((值、键、映射)=>{
如果(值){
文件。推送(键)
}
});
console.log(文件)
您可以使用Map.entries
和filter
以及Map
来实现这一点。基本思想是
使用Map.entries
将该数组筛选为仅值为true
使用“映射”将映射项转换为数组元素
代码看起来像这样
map.entries().filter(entry=>entry[1]).map(entry=>entry[0]);
上面的答案是有效的,但如果您追求的是最快的,那么使用for循环可能会比原型Map和array方法更快,这可能会令人惊讶
又名:
myMap=新映射([
[“文件”,true],
[“file1”,true],
[“file2”,false],
[“file3”,true],
]);
const faster=(文件)=>{
常量映射=[…文件]
const out=[]
for(设i=0;i
myMap = new Map([
["file", true],
["file1", true],
["file2", false],
["file3", true],
]);
const fastest = (files) => {
const map = [...files]
const out = []
for (let i=0; i<map.length; i++){
if (map[i][1]){
out.push(map[i][0])
}
}
return out
}
console.log(fastest(myMap))