js json数组怎么替换空值为 ‘ - ’

[
{name:a,id:''},
{name:c,id:'d'},
{name:b,id:''},
{name:y,id:'d'},
{name:s,id:6},
{name:p,id:3},
]

后台传来的数据怎么把所有的空的替换成 '-'

阅读 6.4k
8 个回答

写个正则 replace 替换就可以了吧? 你这个数据嵌的也不深,

let arr = JSON.parse(data)
arr = arr.map(e=>{...e,id: e.id === '' ? '-': e.id})

可以显示在页面的时候替换,没必要改变这个数组。如果非要改变这个数组的话可以这样:

arr.forEach(v=>{  
    if(v.id == "") {
        v.id = "-";
    }  
});
var arr = [{id:''}, {id:3}, {id:''}]
var newArr = arr.map(function (item) {
  if (item.id === '') {
    item.id = '-'
  }
  return item
})
console.log(newArr) // [{id:'-'}, {id:3}, {id:'-'}]
const arr = JSON.parse(data);
const newArr = arr.map(item => {
    return {
        ...item,
        id: item.id === '' ? '-' : item.id,
    };
});

基本和第一位的一样,但第一位的写法有问题,会报错的;我这个就不会报错了

1、一般拿到后台的数据已经是JSON数据了,如果不是,可以使用JSON.parse()转换一下。
2、针对不同的数据格式我们的写法可以不一样,笔者提供的数据是[{},{},{}]格式,那么我们可以使用更加简单的方法:

 data = [
      {id: "", name: "Eric"},
      {id: 12, name: "Jon"},
   ];

写法1:

data.forEach( item => item.id = item.id || "-" );

写法2(如果不想污染原数据):

let dataCopy = data.map( item => ( {...item, id: item.id || "-"} ) );

说明: () 代表一个表达式

var arr = [
    {name:'a',id:''},
    {name:'c',id:'d'},
    {name:'b',id:''},
    {name:'y',id:'d'},
    {name:'s',id:6},
    {name:'p',id:3},
];
var arr1 = JSON.parse(JSON.stringify(arr).replace(/""/g,'"-"'));
console.log(arr1);

刚回答过这种问题:https://segmentfault.com/q/10...

let data=[
    {name:'a',id:''},
    {name:'c',id:'d'},
    {name:'b',id:''},
    {name:'y',id:'d'},
    {name:'s',id:6},
    {name:'p',id:3},
].map(d=>Object.keys(d).map(k=>({[k]:(d[k]||'-')})).reduce((kd1,kd2)=>({...kd1,...kd2})))

clipboard.png

推荐问题
宣传栏