在node.js中打印数组时获取不需要的信息
Getting unwanted info when printing array in node.js
我正在编写一个程序,该程序从文件(在本例中是ID列表)中获取一些数据。然后,这个程序获取ID,与天气服务器接口,获取服务器返回的信息,并对其进行解析。
然后,它按照城市的名称顺序对数据进行排序,并将其推送到一个数组中。我正试图把它打印出来,但当我打印数组时,我一直得到以下输出:
[ { string: 'Dallas, TX : 91' },
{ string: 'Houston, TX : 86' },
{ string: 'Houston, TX : 86' },
{ string: 'Jacksonville, FL : 83' },
{ string: 'Laguna Hills, CA : 67' },
{ string: 'New York, NY : 91' },
{ string: 'Seattle, WA : 62' } ]
当然,我预计会包括方括号和逗号。但是,为什么要打印出"string:"和大括号呢
这是我的来源:
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var lineReader = require('line-reader');
var cityList = [];
var numItems = 0;
var needToPrint = 0;
lineReader.eachLine('IDList.txt', function(line, last) {
numItems++;
getResponse(line, textParse);
});
var getResponse = function(id, callback){
var request = new XMLHttpRequest;
request.open("GET", "http://weather.yahooapis.com/forecastrss?w=" + id +"&u=f");
request.onreadystatechange = function(){
if(request.readyState === 4 && request.status === 200){
var type = request.getResponseHeader("Content-Type");
if(type.indexOf("xml") !== -1 && request.responseXML)
callback(request.responseXML);
else if(type === "application/json")
callback(JSON.parse(request.responseText));
else
callback(request.responseText);
}
};
request.send(id);
}
var textParse = function (input)
{
var index = input.indexOf("city='"") + "city='"".length;
var endIndex = input.indexOf("'" region='"");
var city = input.substring(index, endIndex);
index = input.indexOf("region='"") + "region='"".length;
var state = input.substring(index, index + 2);
index = input.indexOf("temp='"") + "temp='"".length;
endIndex = input.indexOf("'"", index);
var temp = input.substring(index, endIndex);
var obj = new location(city, state, temp);
cityList.push(obj);
cityList.sort(sortFunc);
needToPrint++;
if(numItems === needToPrint)
printData(cityList);
}
var location = function (city, state, currentTemp)
{
this.string = city + ", " + state + " : " + currentTemp;
};
var sortFunc = function(input1, input2)
{
if (input1.string < input2.string) //sort string ascending
return -1
if (input1.string > input2.string)
return 1
return 0 //default return value (no sorting)
}
var printData = function(objectList){
console.log(objectList);
}
您正在创建一个位置对象:
var obj = new location(city, state, temp);
在该对象中,创建一个string
属性:
this.string = city + ", " + state + " : " + currentTemp;
如果您想要的是一个简单的字符串数组,请更改textParse
以执行以下操作:
cityList.push(city + ", " + state + " : " + currentTemp);
(而不是推送定位对象)
这也需要重写排序函数。
看起来你没有写那个代码,否则你会理解的。也许你缺少的是objectList
是一个对象数组。您可以通过数组索引,然后是对象属性(在本例中为string
)来访问数据。例如,在printData
:中尝试此操作
console.log(objectList[1].string); // 'Houston, TX : 86'
有关如何遍历数据的更多信息,请参阅访问/处理(嵌套)对象、数组或JSON
看起来您正在将Javascript对象推入cityList
数组,所以当您调用printData(cityList)
时,您记录的是数组对象,而不是字符串。因此,控制台抛出JSON。如果你想要原始文本,你需要构建一个字符串。
相关文章:
- 如何获取不属于我项目的上一页的URL
- 如何在不需要单击按钮的情况下获取选项的值
- Javascript不需要的关闭行为
- 删除客户端浏览器上不需要的内容
- 获取不带Jquery的嵌套父HREF节点
- 不允许在字段中输入不需要的字符
- 不需要的JSON响应
- 如何获取去除不需要的字符的url的最后一个元素
- 如何在HTML5网页中本地保存数据,这样我们就不需要一次又一次地从服务器获取
- 在JS中获取不需要't具有值
- 在node.js中打印数组时获取不需要的信息
- Javascript获取输入并执行搜索功能,不需要sumbit按钮
- 在IE和Edge中获取表单元素值,而不需要querySelector
- Jquery从自定义元素中获取HTML,不需要关闭标记
- 从数组中获取特定对象而不需要循环的最佳方法
- Mongodb本地驱动程序获取集合名称而不需要数据库名称
- 如何在Angular应用中获取查询参数,而不需要state或route
- 如何获取数组中多个文件的值而不需要任何循环语句
- 如何对子文档执行操作,而不需要在Mongoose中获取父文档
- 获取骨干模型父关系而不需要额外的请求