Javascript数组不能作为数组访问
Javascript array is not accessible as an array
我正在使用twitter API,我遇到了一个非常令人困惑的问题。
我有以下脚本:
const Twitter = require('twitter-api-stream')
const twitterCredentials = require('./credentials').twitter
const twitterApi = new Twitter(twitterCredentials.consumerKey, twitterCredentials.consumerSecret, function(){
console.log(arguments)
})
twitterApi.getUsersTweets('everycolorbot', 1, twitterCredentials.accessToken, twitterCredentials.accessTokenSecret, (error, result) => {
if (error) {
console.error(error)
}
if (result) {
console.log(result) // outputs an array of json objects
console.log(result.length) //outputs 3506 for some reason (it's only an array of 1)
console.log(result[0]) // outputs a opening bracket ('[')
console.log(result[0].text) // outputs undefined
}
})
调用以下函数与twitter交互:
TwitterApi.prototype.getUsersTweets = function (screenName, statusCount, userAccessToken, userRefreshToken,cb ) {
var count = statusCount || 10;
var screenName = screenName || "";
_oauth.get(
"https://api.twitter.com/1.1/statuses/user_timeline.json?count=" + count + "&screen_name=" + screenName
, userAccessToken
, userRefreshToken
, cb
);
};
似乎我得到了我想要的结果。当我记录结果本身时,我得到以下输出:
[
{
"created_at": "Thu Sep 01 13:31:23 +0000 2016",
"id": 771339671632838656,
"id_str": "771339671632838656",
"text": "0xe07732",
"truncated": false,
...
}
]
这很好,一组推文限制为1条推文。
我遇到的问题是,当我试图访问这个数组。
console.log(result.length) //outputs 3506 for some reason (it's only an array of 1)
console.log(result[0]) // outputs a opening bracket ('[')
console.log(result[0].text) // outputs undefined
我阅读了api文档中的user_timeline,但除非我完全错过了它,否则我没有看到任何提到的特殊输出。
任何想法?
<标题> 更新感谢@nicematt指出这个答案。
只是为了详细说明解决方案,我更新了我的代码,现在我得到了我想要的结果:
if (result) {
let tweet = JSON.parse(result)[0] // parses the json and returns the first index
console.log(tweet.text) // outputs '0xe07732'
}
谢谢你的帮助!
标题>结果是String
,您正在索引它(result[0]
(而0
被转换为字符串),几乎与result.charAt(0)
相同),这就是为什么result[0]
等于"["
-因为它是中指定的第一个字符。您忘记将结果解析为JSON数据。
JSON.parse(result).length // probably 1
和result.text
是undefined
,因为result
(一个字符串)类似于Object
(但不是instanceof),并允许查找和获取本身发生。
我也会显示str[0]
和str.charAt(0)
之间的区别:
str[0] // same as str['0'], but a getter. 0 converts to
// string (because every key of an object
// is string in ECMAScript)
str.charAt(0) // get/lookup String#charAt, call it
// without new `this` context and with arguments list: 0
相关文章:
- 将图像数组访问到动态表中
- JavaScript 自包含函数数组访问自我索引
- 如何使用 angularjs 从 json 数组访问数组
- 带逗号的 JavaScript 数组访问
- JavaScript 数组访问问题
- 从 js obj 数组访问外部 js obj 属性
- 如何从数组访问 json 对象
- Javascript-使用索引数组访问数组的元素
- Javascript 全局数组访问成员未定义
- javascript成对值数组访问
- 如何传递到该数组中对象的数组访问属性的排序方法的函数
- 我怎么能给我的属性的默认数组访问传入的jQuery对象在我的插件
- Javascript数组访问不能在IE 7中工作
- 在Mustache.js / ICanHaz中从内部数组访问外部数组值
- Ajax JSON数组——访问信息
- 如何从存储在变量中的数组访问键?
- 通过JSON AJAX数组访问数据->对象
- 使用数组访问多维数组
- Javascript数组访问未定义
- 如何从单击处理程序中的对象数组访问对象属性