Javascript 选中映射键类型js
我正在尝试检查映射键类型,以确定应该如何过滤它。我目前的方法是检查Javascript 选中映射键类型js,javascript,Javascript,我正在尝试检查映射键类型,以确定应该如何过滤它。我目前的方法是检查myMap.keys().next().value这似乎是未定义的,而不管它是字符串还是int等 我需要检查键是整数还是空。到目前为止,我已经尝试过: !key.next().value // for no key Number.isInteger(key.next().value) // for a numbered key 这些检查不会触发任何“我的if”语句。Number.i仅当参数为Number时才进行INTEGER验证
myMap.keys().next().value
这似乎是未定义的
,而不管它是字符串还是int等
我需要检查键是整数还是空。到目前为止,我已经尝试过:
!key.next().value // for no key
Number.isInteger(key.next().value) // for a numbered key
这些检查不会触发任何“我的if”语句。Number.i仅当参数为Number时才进行INTEGER验证。 如果您验证数字,isInteger(“1”)将始终返回false。 要验证一个键是否为数字,请尝试使用正则表达式,例如:
/^\d+$/.test(key.next().value)
这在两种情况下都很好
/^\d+$/测试(“1”)
和
/^\d+$/.test(1)Number.i仅当参数为Number时才进行INTEGER验证。 如果您验证数字,isInteger(“1”)将始终返回false。 要验证一个键是否为数字,请尝试使用正则表达式,例如:
/^\d+$/.test(key.next().value)
这在两种情况下都很好
/^\d+$/测试(“1”)
和
/^\d+$/.test(1)在使用方法链接时,这是一个非常常见的错误
map.keys()。只需将myMap.keys()返回值保存在变量中,然后调用next().value进行检查。代码如下所示:
let myMap=newmap()
myMap.set(“0”、“零”)
myMap.set(1,“一”)
让迭代器=myMap.keys()
log(iterator.next().value的类型)
console.log(typeof iterator.next().value)
使用方法链接时,这是一个非常常见的错误map.keys()。只需将myMap.keys()返回值保存在变量中,然后调用next().value进行检查。代码如下所示:
let myMap=newmap()
myMap.set(“0”、“零”)
myMap.set(1,“一”)
让迭代器=myMap.keys()
log(iterator.next().value的类型)
console.log(typeof iterator.next().value)
我假设你有一个映射对象,你想根据键类型过滤这些值,对吗
您应该在了解var类型时使用:
var test = "2"
console.log(typeof 42);
// expected output: "number"
console.log(typeof 'blubber');
// expected output: "string"
console.log(typeof true);
// expected output: "boolean"
console.log(typeof declaredButUndefinedVariable);
// expected output: "undefined";
您可以执行以下操作
var myMap = new Map([[undefined, "fffff"],["2", "uno"], [2, "doios"]]);
for (const key of myMap.keys()) {
if(typeof key === 'string'){
myMap.delete(key);
}
}
console.log(myMap)
另一种方法是将地图转换为数组,然后继续过滤结果:
var myMap = new Map([[undefined, "fffff"],["2", "uno"], [2, "doios"]]);
var _typeofKey = 'string'; // you can set typeof key: number , string , boolean , symbol , undefined , object , function
var results = Array.from(a).filter(
function(element){
var key = element[0];
var value = element[1];
if(typeof key === _typeofKey){
return true;
}
return false;
}
)
// new Map without string keys
var newMap = myMap(results);
我假设你有一个映射对象,你想根据键类型过滤值,对吗
您应该在了解var类型时使用:
var test = "2"
console.log(typeof 42);
// expected output: "number"
console.log(typeof 'blubber');
// expected output: "string"
console.log(typeof true);
// expected output: "boolean"
console.log(typeof declaredButUndefinedVariable);
// expected output: "undefined";
您可以执行以下操作
var myMap = new Map([[undefined, "fffff"],["2", "uno"], [2, "doios"]]);
for (const key of myMap.keys()) {
if(typeof key === 'string'){
myMap.delete(key);
}
}
console.log(myMap)
另一种方法是将地图转换为数组,然后继续过滤结果:
var myMap = new Map([[undefined, "fffff"],["2", "uno"], [2, "doios"]]);
var _typeofKey = 'string'; // you can set typeof key: number , string , boolean , symbol , undefined , object , function
var results = Array.from(a).filter(
function(element){
var key = element[0];
var value = element[1];
if(typeof key === _typeofKey){
return true;
}
return false;
}
)
// new Map without string keys
var newMap = myMap(results);
你在第二行缺少一个右括号,在value
之后,你能发布myMap结构吗?这只是示例代码,我的ide会发现这一点供我参考,我没有找到任何数字方法来检查某些int/number类型是否能根据需要正常工作,所以前几天我在另一个问题上发现了这一点:函数isInt(data){return typeof data=='number'&&&(data%1)==0;}
当然,一定有一个例子,你可以告诉我们,在value
之后,第二行缺少一个右括号,你可以发布myMap结构吗?这只是一个例子代码,我的ide可能会发现,对于我来说,作为参考,我还没有找到任何检查某些int/number类型是否能够根据需要正常工作的number方法,因此我在前几天的另一个问题上发现了这一点:函数isInt(data){return typeof data=='number'&(data%1)==0;}
当然,您可以给我们展示一个例子