我知道这方面还有很多类似的问题,但没有一个答案是有效的。在我的例子中,我有下面的代码,我正在尝试按分数降序排列记录数组。
function score(string, pattern){
string = string.toLowerCase();
pattern = pattern.toLowerCase();
var position = 0;
var count = 0;
while (true) {
var index = string.indexOf(pattern, position);
if (index == -1) break;
count++;
position = index + 1;
}
return(count);
}
function urlScores(web, pattern){
var records = {};
var results = [];
var n = 0;
for(var i = 0; i < web.length; i++){
n = score(web[i].content, pattern);
if(n != 0){
records.url = web[i].url;
records.score = n;
results[results.length] = {url: records.url, score: records.score};
}
}
return(JSON.stringify(results));
}
function rankedScores(web, pattern){
results = JSON.parse(urlScores(web, pattern));
var temp = 0;
var tempUrl = '';
while(counter < results.length){
for(var i in results){
numbers[numbers.length] = results[i].score;
if(results[i].score < results[i + 1].score){
temp = results[i].score;
tempUrl = results[i].url;
results[i] = {url: results[i+1].url, score: results[i+1].score};
results[i + 1] = {url: tempUrl, score: temp};
}
}
counter++;
}
alert(JSON.stringify(results));
}
最后一个函数是什么给我的问题.如果用户运行以下:
var web=[{url:“www.southanpton.ac.uk”,内容:“南安普敦大学提供学位课程和世界一流的研究测试。”,{url:“www.xyz.ac.uk”,内容:“另一种大学考试”},{url:“www”,内容:“另一种大学考试”};
RankedScores(web,'test');
它应该以降序输出相同的数组。相反,我得到了一个无法读取的未定义属性“score”。有人能看出我哪里出了错吗
谢谢
另外,我们不允许使用。排序()!
这一行:
if(results[i].score < results[i + 1].score){
对于数组中的最后一个元素,结果[i 1]将不存在。尝试添加其他条件以捕获该情况:
if(typeof results[i + 1] != 'undefined' && results[i].score < results[i + 1].score){
在rankedScores
中,您使用的是结果[i 1]。如果
,则在中得分
,但如果没有结果的此类元素
(因为i
是最后一个的索引),则会得到描述的错误。
function rankedScores(web, pattern){
var results = JSON.parse(urlScores(web, pattern));
var temp = 0;
var tempUrl = '';
var counter = 0;
var numbers = [], i, len = results.length;
while (counter < results.length){
for (i = 0; i < len - 1; i++){
numbers[numbers.length] = results[i].score; /// ????
if (results[i].score < results[i + 1].score){
temp = results[i].score;
tempUrl = results[i].url;
results[i] = {url: results[i+1].url, score: results[i + 1].score};
results[i + 1] = {url: tempUrl, score: temp};
}
}
counter++;
}
alert(JSON.stringify(results));
}
为什么我得到这个错误不能读取未定义的触摸属性? 为什么它不能读取,但它可以读取 当我们使用
问题内容: 我正在制作非常简单的react应用。但是,当我尝试通过onChange事件调用父(实际上是祖父母)组件的方法时,我一直在获取。 这是触发事件的组件/表单(因此,在绑定的父组件上调用方法…是的,因为我通过道具将其从父组件传递下来,所以在方法上使用了.bound(this)。) 这是我如何通过大多数父(祖父母)组件中的props传递该方法的方法。 这是我作为父项(方法所有者和方法调用程序之
我正在测试发送电子邮件与流星js和nodemailer插件: 流星添加捷运:流星NodeEmailer 当页面加载时,我在导航器的控制台上看到错误:无法读取未定义的属性“创建运输”。 那么问题是什么呢? 代码如下: /////////////////////////////////////////// ///////////////
我一直试图让firebase与react一起工作,但出现了此错误 未经处理的拒绝(TypeError):无法读取未定义的fetch D:/Peti/Programming/node/coursewebpage/src/components/coursePage.js:12 9 | const db=firebase.firestore()10 | const myAuthLevel=(fireba
这是我的猫鼬模式: 这是使用Express的Node.js服务器。它具有路由,如果触发该路由,它将使用请求中传递的信息更新用户的购物车。正文: 我打印到终端userCart,正如您在代码中看到的,它返回给我的是: 当服务器执行时,它返回以下错误: 如果我已经在Mongoose中定义了的结构,为什么不定义它?
请注意,我在react ProductScreen.js中呈现动态数据时有问题 注意,...数据在product.js中呈现得很好,但相同的数据在productscreen.js中不会呈现,因为productscreen.js链接是通过“id”呈现的。 谢谢app.js 导入“./homescreen.css”;从'../Components/Product'导入产品从'React'导入{useE