Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将JSON对象的所有空白值转换为连字符?_Javascript - Fatal编程技术网

Javascript 如何将JSON对象的所有空白值转换为连字符?

Javascript 如何将JSON对象的所有空白值转换为连字符?,javascript,Javascript,以下是我的回答示例: var jsonData1 = [{ firstName: "Sam", age: "10" }, { firstName: "John", age: "11" }, { firstName: "Jack", age: "12" }, { firstName: "Pam", age: "13" }, { firstName: "", age: "14" }, { firstName: "Mitch", age: "" }];

以下是我的回答示例:

var jsonData1 = [{
  firstName: "Sam",
  age: "10"
}, {
  firstName: "John",
  age: "11"
}, {
  firstName: "Jack",
  age: "12"
}, {
  firstName: "Pam",
  age: "13"
}, {
  firstName: "",
  age: "14"
}, {
  firstName: "Mitch",
  age: ""
}];

我所要做的就是,在任何字段中有空白字符串的地方,将其显示为零。我想使用简单的JS,没有lodash,没有jQuery

您可以用一行代码编写:

jsonData1.forEach(o => Object.keys(o).forEach(key => o[key] === '' && (o[key] = '-')))

假设给定的数据结构,我会这样处理:

  • 使用
    array.forEach()
  • 使用
    Object.keys(person.forEach()
  • 检查活塞环是否排空并更换
像这样:

jsonData1.forEach(person => {
     Object.keys(person).forEach(key => {
         if (person[key] === "") person[key] = "-";
     });
});
简单循环


for(设i=0;i由于您有一个数组,您可以简单地对其进行迭代:

for (var i=0;i<jsonData1.length;i++) {
    if (jsonData1[i].age==="")
        jsonData1[i].age = 0;
    if (jsonData1[i].firstName==="")
        jsonData1[i].firstName = "Unknown";
}
for(var i=0;i您可以使用

for…of
语句创建了一个循环,循环迭代可编辑对象,包括:内置字符串、数组、类似数组的对象(例如参数或节点列表)、TypedArray、映射、集合和用户定义的可编辑对象

var jsonData1=[{
名字:“山姆”,
年龄:“10”}{
名字:“约翰”,
年龄:“11”}{
名字:“杰克”,
年龄:“12”}{
名字:“帕姆”,
年龄:“13”}{
名字:“,
年龄:“14”}{
名字:“米奇”,
年龄:“
}];
对于(jsonData1的var p){
如果(p.firstName.trim()=“”)p.firstName=“0”;
如果(p.age.trim()=“”)p.age=“0”
}
console.log(jsonData1);
试试这个

 let newData = jsonData1.forEach(function(data) {
     for(ans in data) {
        If(data[ans] === "") data[ans] = 0;
     }
  });

使用
forEach
循环

var jsonData1=[
{
名字:“山姆”,
年龄:“10”
},
{
名字:“约翰”,
年龄:“11”
},
{
名字:“杰克”,
年龄:“12”
},
{
名字:“帕姆”,
年龄:“13”
},
{
名字:“,
年龄:“14”
},
{
名字:“米奇”,
年龄:“
}
];
jsonData1.forEach((e)=>{Object.keys(e).forEach((x)=>e[x]=“”?e[x]=0:false)})

console.log(jsonData1)
应该对嵌套对象执行以下操作:

const convertObj = obj => {
    Object.keys(obj).forEach(key => {
        if (obj[key] === '') {
            obj[key] = 0
        } else if (obj[key] instanceof Object) {
            convertObj(obj[key])
        }
    })

    return obj
}
样本测试:

const jsonData1 = [
   {
        firstName: "Mitch",
        age: "",
        nested_test: [
            {
                foo: 'bar',
                age: ''
            }
        ],
        nested_object: {
            foo: 'bar',
            age: ''
        }
    }
]
结果:

[
  {
    "firstName": "Mitch",
    "age": 0,
    "nested_array": [
      {
        "foo": "bar",
        "age": 0
      }
    ],
    "nested_object": {
      "foo": "bar",
      "age": 0
    }
  }
]

请学习。请使您的标题与描述相符。您可能希望使用
jsonData1.map((x)=>{});
这不起作用-
Object.keys()
接受一个对象,而不是一个函数。我想要旧的es5语法,更好地使用plain for loopsLooks!我建议使用三重等于比较,而不是双等于,以避免意外的类型强制。这不包括FirstName的情况。我恐怕这行不通-jsonData[I]。age.length是一个数字,因此永远不会等于“”.看起来好多了,虽然未知的
似乎不知从何而来!当然你们都是对的,修正了,谢谢!我从.length==0'到'==''的方法时感觉不太好。我错过了第一个名字,因为将名字设置为零不符合我的想法;-)-对于一般方法,请参考其他答案。我想用旧JS风格编写just for Loops,你确定吗?我再也不用
for
了-这太复杂了。但是如果你愿意的话!我想用旧语法编写,plain for Loops这有点太急迫了-你还需要替换空数组,这不是提问者想要的。我要使用普通for循环以旧语法编写吗
const jsonData1 = [
   {
        firstName: "Mitch",
        age: "",
        nested_test: [
            {
                foo: 'bar',
                age: ''
            }
        ],
        nested_object: {
            foo: 'bar',
            age: ''
        }
    }
]
[
  {
    "firstName": "Mitch",
    "age": 0,
    "nested_array": [
      {
        "foo": "bar",
        "age": 0
      }
    ],
    "nested_object": {
      "foo": "bar",
      "age": 0
    }
  }
]