Javascript 方法未添加到原型中
我有一个js文件,我正在使用它学习javascript。但是,当我运行concatAll时,它会说:Javascript 方法未添加到原型中,javascript,arrays,prototype,Javascript,Arrays,Prototype,我有一个js文件,我正在使用它学习javascript。但是,当我运行concatAll时,它会说: Uncaught TypeError: movieLists.map(...).concatAll is not a function Js文件: console.log(tryFun()); Array.prototype.concatAll = function() { var results = []; this.forEach(function(subArray) {
Uncaught TypeError: movieLists.map(...).concatAll is not a function
Js文件:
console.log(tryFun());
Array.prototype.concatAll = function() {
var results = [];
this.forEach(function(subArray) {
results.push(subArray);
});
return results;
};
function tryFun() {
var movieLists = [
{
name: "New Releases",
videos: [
{
"id": 70111470,
"title": "Die Hard",
"boxart": "http://cdn-0.nflximg.com/images/2891/DieHard.jpg",
"uri": "http://api.netflix.com/catalog/titles/movies/70111470",
"rating": 4.0,
"bookmark": []
},
{
"id": 654356453,
"title": "Bad Boys",
"boxart": "http://cdn-0.nflximg.com/images/2891/BadBoys.jpg",
"uri": "http://api.netflix.com/catalog/titles/movies/70111470",
"rating": 5.0,
"bookmark": [{ id: 432534, time: 65876586 }]
}
]
},
{
name: "Dramas",
videos: [
{
"id": 65432445,
"title": "The Chamber",
"boxart": "http://cdn-0.nflximg.com/images/2891/TheChamber.jpg",
"uri": "http://api.netflix.com/catalog/titles/movies/70111470",
"rating": 4.0,
"bookmark": []
},
{
"id": 675465,
"title": "Fracture",
"boxart": "http://cdn-0.nflximg.com/images/2891/Fracture.jpg",
"uri": "http://api.netflix.com/catalog/titles/movies/70111470",
"rating": 5.0,
"bookmark": [{ id: 432534, time: 65876586 }]
}
]
}
];
return movieLists.map(movieList=>
movieList.videos.map(video=>video.id))
.concatAll();
}
看起来我在这里遗漏了一些技巧。感谢您的关注。Javascript是否应该在文件开头定义的原型上添加函数?哦,我明白了!它的程序流concatAll从未添加。移动调用有助于:
Array.prototype.concatAll = function() {
var results = [];
this.forEach(function(subArray) {
results.push(subArray);
});
return results;
};
console.log(tryFun());
哦,明白了!它的程序流concatAll从未添加。移动调用有助于:
Array.prototype.concatAll = function() {
var results = [];
this.forEach(function(subArray) {
results.push(subArray);
});
return results;
};
console.log(tryFun());
在添加
concatAll
之前,您正在调用tryFun
。在调用tryFun
之前,将该方法添加到原型中:
Array.prototype.concatAll=function(){
var结果=[];
this.forEach(函数(子数组){
结果:推送(子阵);
});
返回结果;
};
log(tryFun());
函数tryFun(){
var movieLists=[
{
名称:“新版本”,
视频:[
{
“id”:70111470,
“头衔”:“死硬”,
“boxart”:http://cdn-0.nflximg.com/images/2891/DieHard.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:4.0,
“书签”:[]
},
{
“id”:654356453,
“头衔”:“坏男孩”,
“boxart”:http://cdn-0.nflximg.com/images/2891/BadBoys.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:5.0,
“书签”:[{id:432534,时间:65876586}]
}
]
},
{
名称:“戏剧”,
视频:[
{
“id”:65432445,
“头衔”:“商会”,
“boxart”:http://cdn-0.nflximg.com/images/2891/TheChamber.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:4.0,
“书签”:[]
},
{
“id”:675465,
“标题”:“骨折”,
“boxart”:http://cdn-0.nflximg.com/images/2891/Fracture.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:5.0,
“书签”:[{id:432534,时间:65876586}]
}
]
}
];
返回movieList.map(movieList=>
movieList.videos.map(video=>video.id))
.concatal();
}
在添加concatAll
之前,您正在呼叫tryFun
。在调用tryFun
之前,将该方法添加到原型中:
Array.prototype.concatAll=function(){
var结果=[];
this.forEach(函数(子数组){
结果:推送(子阵);
});
返回结果;
};
log(tryFun());
函数tryFun(){
var movieLists=[
{
名称:“新版本”,
视频:[
{
“id”:70111470,
“头衔”:“死硬”,
“boxart”:http://cdn-0.nflximg.com/images/2891/DieHard.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:4.0,
“书签”:[]
},
{
“id”:654356453,
“头衔”:“坏男孩”,
“boxart”:http://cdn-0.nflximg.com/images/2891/BadBoys.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:5.0,
“书签”:[{id:432534,时间:65876586}]
}
]
},
{
名称:“戏剧”,
视频:[
{
“id”:65432445,
“头衔”:“商会”,
“boxart”:http://cdn-0.nflximg.com/images/2891/TheChamber.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:4.0,
“书签”:[]
},
{
“id”:675465,
“标题”:“骨折”,
“boxart”:http://cdn-0.nflximg.com/images/2891/Fracture.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:5.0,
“书签”:[{id:432534,时间:65876586}]
}
]
}
];
返回movieList.map(movieList=>
movieList.videos.map(video=>video.id))
.concatal();
}
通常与您试图实现的内容相关,您可以很容易地在不使用.concatal()
函数的情况下完成,因为.concat()
是可变的,将自动展平数组
因此,使用“扩展语法”,您可以执行以下操作:
return [].concat(...movieLists.map(
movieList => movieList.videos.map(video => video.id))
);
这里有一个现场演示:
console.log(tryFun());
函数tryFun(){
var movieLists=[{
名称:“新版本”,
视频:[{
“id”:70111470,
“头衔”:“死硬”,
“boxart”:http://cdn-0.nflximg.com/images/2891/DieHard.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:4.0,
“书签”:[]
},
{
“id”:654356453,
“头衔”:“坏男孩”,
“boxart”:http://cdn-0.nflximg.com/images/2891/BadBoys.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:5.0,
“书签”:[{
身份证号码:432534,
时间:65876586
}]
}
]
},
{
名称:“戏剧”,
视频:[{
“id”:65432445,
“头衔”:“商会”,
“boxart”:http://cdn-0.nflximg.com/images/2