Maison  >  Article  >  interface Web  >  Comment analyser parfaitement les données en js

Comment analyser parfaitement les données en js

亚连
亚连original
2018-05-29 15:48:082154parcourir

Cet article partage avec vous les méthodes et techniques pour analyser parfaitement les données en JS. Les amis qui sont intéressés peuvent s'y référer.

Depuis la séparation du front-end et du back-end, les structures de données fournies par certains partenaires back-end sont devenues de plus en plus confuses. Ils pensaient que la séparation réduirait leur charge et que la qualité de l'interface serait très élevée, mais la paresse humaine s'est avérée « parfaite ».

Comme js est un langage typé, plusieurs erreurs se produisent souvent lors de l'utilisation des données

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

Ces exceptions sont difficiles à trouver, et il se peut qu'il ne soit pas possible de les publier en ligne à temps. être trouvé. Parce que ces problèmes sont causés par des anomalies de données. Et si nous résolvions ou évitions avec élégance ces problèmes qui affectent l’expérience utilisateur ?

// 第一种做法肯定是这样的
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
[]

J'ai compilé ce qui précède pour vous, j'espère que cela vous sera utile à l'avenir.

Articles connexes :

Le problème et la solution du scintillement de {{}} lors du rendu de la vue

jQuery implémente du texte avec plus de 1 line, Méthode pour ajouter automatiquement des points de suspension lorsqu'il y a 2 lignes ou un nombre spécifié de lignes

Méthode pour obtenir les valeurs des paramètres de contexte à l'aide de l'expression EL dans JS

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn