最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

js中如何完美的解析数据

来源:动视网 责编:小采 时间:2020-11-27 19:44:23
文档

js中如何完美的解析数据

js中如何完美的解析数据:这篇文章给大家分享了JS中完美解析数据的方法和技巧,对此有兴趣的朋友可以参考学习下。自从有了前后端分离,一些后端小伙伴给出的数据结构也来越混乱了。以为分离减轻了他们的负担接口的质量会非常高但是人的惰性却体现的很完美。由于js是若类型的语言,
推荐度:
导读js中如何完美的解析数据:这篇文章给大家分享了JS中完美解析数据的方法和技巧,对此有兴趣的朋友可以参考学习下。自从有了前后端分离,一些后端小伙伴给出的数据结构也来越混乱了。以为分离减轻了他们的负担接口的质量会非常高但是人的惰性却体现的很完美。由于js是若类型的语言,


这篇文章给大家分享了JS中完美解析数据的方法和技巧,对此有兴趣的朋友可以参考学习下。

自从有了前后端分离,一些后端小伙伴给出的数据结构也来越混乱了。以为分离减轻了他们的负担接口的质量会非常高但是人的惰性却体现的很“完美”。

由于js是若类型的语言,所以在使用数据的时候经常会出现这个几个错误

TypeError: Cannot read property 'xxx' of undefined
TypeError: Cannot read property 'xxx' of null
TypeError: xxx.map is not a function

而这些异常很难发现,及时发上线了都不一定能发现。因为这些问题都是由于数据异常导致的。如果优雅的解决或者说避免这些问题影响到用户体验呢?

// 第一种做法肯定是这样的
if(a){
 return a.name || '你没名字'
}
// 这种做法处理简单的还能凑合用,但是如果你遇到这样的呢 user.country.area.city.name,难道要这样写
if(user && user.country && user.country.area && user.country.area.city){
 return user.country.area.city.name || '你没名字'
}
// 这是多么痛苦的一件事情 @后端兄弟

// 第二种,感谢es6
let {country={area:{city:{name:'你没名字'}}}} = user;
这个感觉也不是很好的解决方案

// 第三种,利用reduce构建一个解析函数
function getValue(obj,key){
 return key.split('.').reduce(function(o,k){
 // o,当前对象
 // key,数组下一个元素
 if((typeof o === 'undefined' || o === null)){
 return k.indexOf('[array]') !== -1?[]:o
 }else{
 return k.indexOf('[array]') !== -1?(o[k.replace('[array]','')]||[]):o[k]
 }
 },obj)
}

let user1;

let user2 = {
 
}

let user3 = {
 country:{
 area:{
 city:{
 name:'12312'
 }
 }
 }
}
let user4 = {
 country:[
 {
 city:{
 name:'12312'
 }
 }
 ]
}

let user5 = {
 country:{
 city:[1,2,3]
 }
}

console.log(getValue(user1,'country.area.city.name'))

console.log(getValue(user2,'country.area.city.name'))

console.log(getValue(user3,'country.area.city.name'))

console.log(getValue(user5,'country.city[array]'))
console.log(getValue(user5,'country.city[array].1'))
console.log(getValue(user5,'country.city[array].10'))
console.log(getValue(user5,'country.city[array].1.name'))
console.log(getValue(user5,'country.city[array].persion[array]'))

// 
输出结果 undefined undefined "12312" [1, 2, 3] 2 undefined undefined []

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

vue渲染时闪烁{{}}的问题及解决方法

jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法

JS中用EL表达式获取上下文参数值的方法

文档

js中如何完美的解析数据

js中如何完美的解析数据:这篇文章给大家分享了JS中完美解析数据的方法和技巧,对此有兴趣的朋友可以参考学习下。自从有了前后端分离,一些后端小伙伴给出的数据结构也来越混乱了。以为分离减轻了他们的负担接口的质量会非常高但是人的惰性却体现的很完美。由于js是若类型的语言,
推荐度:
标签: 数据 完美 js
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top