猿问

如何筛选仅等于数组中项的映射

你好,伙计们,我有一张这样的地图


Map {

'708335088638754946' => 38772,

'712747381346795670' => 12051,

'712747409108762694' => 12792 

}

我有一个数组,如


let array = ["712747381346795670", "708335088638754946"]

如何过滤仅等于数组中项的映射


开心每一天1111
浏览 145回答 4
4回答

慕田峪9158850

const oldMap = new Map([["a", "1"], ["b", "2"], ["c", "3"]]);const array = ["a", "c"];const newMap = new Map(array.map(key => [key, oldMap.get(key)]));// newMap is the same as oldMap but only with keys from array或const oldMap = new Map([["a", "1"], ["b", "2"], ["c", "3"]]);const array = ["a", "c"];const newMap = new Map([...oldMap.entries()].filter(entry => array.includes(entry[0])))// newMap is the same as oldMap but only with keys from array

一只斗牛犬

您可以按如下方式将该函数与该函数一起使用:Object.entriesArray.prototype.maplet data = {'708335088638754946': 38772,'712747381346795670': 12051,'712747409108762694': 12792 };let array = ["712747381346795670", "708335088638754946"];let result = Object.entries(data)      .filter(([k]) => array.includes(k))      .map(([key,value]) => ({[key]: value}));      console.log(result);另一种方法可能是函数Array.prototype.reducelet data = {'708335088638754946': 38772,'712747381346795670': 12051,'712747409108762694': 12792 };let array = ["712747381346795670", "708335088638754946"];let result = Object.entries(data)      .reduce((a, [k, v]) => a.concat(array.includes(k) ? {[k]: v} : []), []);      console.log(result);使用对象Maplet data = new Map([['708335088638754946', 38772],['712747381346795670', 12051], ['712747409108762694', 12792]]);let array = ["712747381346795670", "708335088638754946"];let result = new Map(Array.from(data.keys())      .reduce((a, k) => a.concat(array.includes(k) ? [[k, data.get(k)]] : []), []));console.log(result.has("712747409108762694"));console.log(result.has("708335088638754946"));console.log(result.has("712747381346795670"));

繁花不似锦

const map = new Map([["a", "b"], ["c", "d"], ["e", "f"]]);const array = ["a", "c"];console.log(map);for (let [prop, value] of map) {  if (array.includes(prop)) {    // collect matched items here  }}

沧海一幻觉

您可以只循环访问所有条目,只将匹配的条目添加到结果中:const result = new Map();const array = ["712747381346795670", "708335088638754946"];for( const [ key, value ] of input.entries() ) {  if( array.includes( key ) ) {    result.set( key, value );  }}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答