TypeError: Cannot read property 'hasOwnProperty' of undefined - Twitter API V2 vs. GAS
TypeError: Cannot read property 'hasOwnProperty' of undefined - Twitter API V2 vs. GAS
推特 API:
https://developer.twitter.com/en/docs/twitter-api/tweets/timelines/introduction
理论上,当没有数据时,应该将值留空。如脚本的这一部分所示:
if (
obj_data.data[int_i].entities.hasOwnProperty("urls") &&
Array.isArray(obj_data.data[int_i].entities.urls) &&
obj_data.data[int_i].entities.urls[0].expanded_url != undefined
) {
array_Expanded_url.push([obj_data.data[int_i].entities.urls[0].expanded_url]);
} else {
array_Expanded_url.push([""]);
}
但出现此错误提示:
TypeError: Cannot read property 'hasOwnProperty' of undefined
并且出现明显的错误表明这一行:
obj_data.data[int_i].entities.hasOwnProperty("urls") &&
我怎样才能修改我的脚本以便不再发生这种情况?
只需检查链中的真实值
if ( obj_data.data && obj_data.data[int_i] && obj_data.data[int_i].entities && obj_data.data[int_i].entities.urls &&
Array.isArray(obj_data.data[int_i].entities.urls) &&
obj_data.data[int_i].entities.urls[0].expanded_url != undefined)
{ ....
或更简洁(谢谢@Scotty Jamison)
if (obj_data.data?.[int_i]?.entities?.urls?.[0]?.expand_url !== undefined) {...
你可以看到哪里出了问题
console.log(!obj_data.data, !obj_data.data[int_i], !obj_data.data[int_i].entities, !obj_data.data[int_i].entities.urls);
ex 输出:
false false true true
检查空值或未定义值
if (
obj_data?.data[int_i]?.entities?.hasOwnProperty('urls') &&
Array.isArray(obj_data?.data[int_i]?.entities.urls) &&
obj_data?.data[int_i]?.entities?.urls[0]?.expanded_url != undefined
) {
array_Expanded_url.push([
obj_data.data[int_i].entities.urls[0].expanded_url,
]);
} else {
array_Expanded_url.push(['']);
}
推特 API:
https://developer.twitter.com/en/docs/twitter-api/tweets/timelines/introduction
理论上,当没有数据时,应该将值留空。如脚本的这一部分所示:
if (
obj_data.data[int_i].entities.hasOwnProperty("urls") &&
Array.isArray(obj_data.data[int_i].entities.urls) &&
obj_data.data[int_i].entities.urls[0].expanded_url != undefined
) {
array_Expanded_url.push([obj_data.data[int_i].entities.urls[0].expanded_url]);
} else {
array_Expanded_url.push([""]);
}
但出现此错误提示:
TypeError: Cannot read property 'hasOwnProperty' of undefined
并且出现明显的错误表明这一行:
obj_data.data[int_i].entities.hasOwnProperty("urls") &&
我怎样才能修改我的脚本以便不再发生这种情况?
只需检查链中的真实值
if ( obj_data.data && obj_data.data[int_i] && obj_data.data[int_i].entities && obj_data.data[int_i].entities.urls &&
Array.isArray(obj_data.data[int_i].entities.urls) &&
obj_data.data[int_i].entities.urls[0].expanded_url != undefined)
{ ....
或更简洁(谢谢@Scotty Jamison)
if (obj_data.data?.[int_i]?.entities?.urls?.[0]?.expand_url !== undefined) {...
你可以看到哪里出了问题
console.log(!obj_data.data, !obj_data.data[int_i], !obj_data.data[int_i].entities, !obj_data.data[int_i].entities.urls);
ex 输出:
false false true true
检查空值或未定义值
if (
obj_data?.data[int_i]?.entities?.hasOwnProperty('urls') &&
Array.isArray(obj_data?.data[int_i]?.entities.urls) &&
obj_data?.data[int_i]?.entities?.urls[0]?.expanded_url != undefined
) {
array_Expanded_url.push([
obj_data.data[int_i].entities.urls[0].expanded_url,
]);
} else {
array_Expanded_url.push(['']);
}