gpt4 book ai didi

Javascript 数组不能作为数组访问

转载 作者:可可西里 更新时间:2023-11-01 02:05:24 26 4
gpt4 key购买 nike

我在使用 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 docs for the 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'
}

感谢您的帮助!

最佳答案

Result 是一个 String 并且您正在对其进行索引(result[0](而 0 被转换为字符串),是尽管与 result.charAt(0) 几乎相同),这就是为什么 result[0] 等于 "[" - 因为它是中指定的第一个字符。您忘记将结果解析为 JSON 数据。

JSON.parse(result).length // probably 1

并且 result.textundefined 因为 result (一个字符串)就像一个 Object (但不是't instanceof) 并允许查找和 getter 自行发生。

我还会展示 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 数组不能作为数组访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39273751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com