而当我使用单个值时,会引发错误。遗漏的类型错误:health.map不是一个函数

问题描述:

  • 我是新来的JS。
  • 当我使用阵列健康地图方法工作正常
  • 而当我使用单个值它会引发错误。未捕获TypeError:health.map不是一个函数
  • 你能告诉我如何解决它..
  • 提供我的代码如下。

工作输入而当我使用单个值时,会引发错误。遗漏的类型错误:health.map不是一个函数

let health =[{ "addedByName":"player", "mobileVersion":"sa,ple.txt" }, 
     { "addedByName":"player", "mobileVersion":"sa,ple.pdf" } 
     ]; 

工作不输入

let health ={ "addedByName":"player", "mobileVersion":"sa,ple.txt" }; 

破琴: http://jsfiddle.net/fq9ucpcb/

let health ={ "addedByName":"player", "mobileVersion":"sa,ple.txt" }; 

let types = ["text/plain", "application/pdf"]; 

let downloads = health.map(function(version) { 
        let ext = version.mobileVersion.replace(/.*(?=\.\w+)/, ""); 
+0

不能映射的对象。你想要做什么?映射仅为顺序容器提供了感官,而不是简单对象。 – Carcigenicate

.map()函数仅适用于数组,这就是为什么当您尝试在对象上使用它时出现错误。

如果要通过一个对象的属性环,可以使用的方法等for...inObject.keys()

+0

可你在我的小提琴更新其如此混乱:( –

地图是Array类原型方法。 map方法适用于Array中的每个元素。


let health = {“addedByName”:“player”,“mobileVersion”:“sample.txt”};


“健康”是一个对象,你想调用的地图()方法,在这个健康Object.So这里你得到错误“遗漏的类型错误:health.map不是一个函数”是指本地图( )对象(健康)不起作用。

+0

你能在我的小提琴更新....这是 –

“健康”是不是数组。 “map”方法只能用于数组。健康是一个具有属性的对象,并且这些属性需要是唯一的。您可以使用属性访问器修改属性,如“。” (点符号)或属性[属性名称'](括号表示法)。如果您的对象具有相似的属性,则可以使用“for in”循环和正则表达式或其他字符串匹配方法来修改这些属性值。

let health = { 
 
    "addedByName": "player", 
 
    "mobileVersion": "sa,ple.txt" 
 
}; 
 

 
let types = ["text/plain", "application/pdf"]; 
 

 
let downloads = health.mobileVersion.replace(/.*(?=\.\w+)/, "") 
 

 
console.log(downloads);

+0

你能在我的小提琴更新混乱....这是令人困惑 –

+0

@texirv你的“地图功能”包括了一系列的在这个问题的范围之外,我不能解耦你的代码,也许你可以缩小这个问题的范围,并提出另一个问题:) – Rick