gpt4 book ai didi

JavaScript 容纳字符串、对象和数组

转载 作者:行者123 更新时间:2023-12-02 14:22:38 25 4
gpt4 key购买 nike

我必须解析一个 json 对象,它可以是字符串、数组、字符串数组和对象数组。我意识到从一开始就不好,一个对象可以有多种类型,但我无法从上游更改代码,所以我必须在我的代码中处理它。我正在为现代浏览器构建一个像素库,所以我没有使用 jQuery 或 lodash。我支持大多数现代浏览器和 IE >= 9

这是可以返回的数据的示例

"author": {
"@type": "Person",
"name": "Author"
}

或者

"author":[{"@type":"Person","name":"Author"}]

或者

"author": 'Author'

或者

"author": ['Author', 'Author1']

这是我的代码。

  let obj = {};
try {
const json = document.querySelector('div.json');
if (json) {
let disc = JSON.parse(json.innerHTML);
let authors = disc.author;

if (typeof authors !== 'undefined' && Array.isArray(authors) && authors.length > 0) {
authors = authors.map((author) => {
if (typeof author === 'object' && author.name) {
return author.name;
} else {
return author;
}
});
}

if (typeof authors !== 'undefined' && !Array.isArray(authors) && typeof authors === 'object') {
authors = [authors.name];
}

if (typeof authors !== 'undefined' && typeof authors === 'string') {
authors = authors.split(',');
}

obj.cAu: authors.join(',');
}
} catch (e) { }

return obj;

我的问题是,有没有更好的方法以更有效的方式做到这一点?

最佳答案

怎么样:

switch (typeof authors) {
case 'object':
if ( Array.isArray(authors) ) {
authors = authors.map((author) => {
if (typeof author === 'object' && author.name) {
return author.name;
} else {
return author;
}
});
} else {
authors = [authors.name];
}
break;
case 'string':
authors = authors.split(',');
break;
case 'undefined':
//
break;
}

关于JavaScript 容纳字符串、对象和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38533964/

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