Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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,并为不存在的键赋值_Javascript_Arrays_Json_Object - Fatal编程技术网

循环对象替换未定义的JavaScript,并为不存在的键赋值

循环对象替换未定义的JavaScript,并为不存在的键赋值,javascript,arrays,json,object,Javascript,Arrays,Json,Object,我有一个名为data的对象,其中一些元素未定义,或者只是缺少 如何执行for循环,将我的个人值分配给这些字段 data.forEach(function(obj) { for(var i in obj) { if(obj[i] === undefined) { obj[i] = ''; } } }); 这当前仅替换未定义的,,如果任何字段不存在,如何更新以传递空值?您可以使用所有键创建一个数组: var keys = ['foo', 'bar', 'buz

我有一个名为
data
的对象,其中一些元素
未定义,或者只是缺少

如何执行
for
循环,将我的个人值分配给这些字段

data.forEach(function(obj) {
  for(var i in obj) { 
    if(obj[i] === undefined) {
      obj[i] = '';
    }
  }
});

这当前仅替换未定义的
,如果任何字段不存在,如何更新以传递空值?

您可以使用所有键创建一个数组:

var keys = ['foo', 'bar', 'buzz'];
然后遍历它,检查对象中是否存在给定的键属性

var obj = {
    foo: 'a'
}

for (var i = 0, n = keys.length; i < n; i++) {
    var key = keys[i];

    if (!obj[key]) {
        obj[key] = '';
    }      
}
var obj={
福:“a”
}
对于(变量i=0,n=keys.length;i

干杯

您可以使用所有键创建一个数组:

var keys = ['foo', 'bar', 'buzz'];
然后遍历它,检查对象中是否存在给定的键属性

var obj = {
    foo: 'a'
}

for (var i = 0, n = keys.length; i < n; i++) {
    var key = keys[i];

    if (!obj[key]) {
        obj[key] = '';
    }      
}
var obj={
福:“a”
}
对于(变量i=0,n=keys.length;i

干杯

如果您想完成“间隙”,即您的某些对象将不具有其他对象所具有的属性,那么您可以使用以下ES6代码:

函数填充间隙(数据){
返回新的集合([].concat(…data.map(Object.keys))//创建所有键的集合
.forEach(键=>
data.filter(obj=>obj[key]==未定义)//获取缺少/未定义的键
.forEach(obj=>obj[key]='');//设置它们
}
//范例
风险值数据=[{
答:1,,
b:2
}, {
a:10,
b:30,
c:9
}, {
答:未定义,
c:8
}];
填补空白(数据);
控制台日志(数据)

.as console wrapper{max height:100%!important;top:0;}
如果您想完成“间隙”,即您的某些对象将不具有其他对象所具有的属性,那么您可以使用以下ES6代码:

函数填充间隙(数据){
返回新的集合([].concat(…data.map(Object.keys))//创建所有键的集合
.forEach(键=>
data.filter(obj=>obj[key]==未定义)//获取缺少/未定义的键
.forEach(obj=>obj[key]='');//设置它们
}
//范例
风险值数据=[{
答:1,,
b:2
}, {
a:10,
b:30,
c:9
}, {
答:未定义,
c:8
}];
填补空白(数据);
控制台日志(数据)

.as控制台包装{max height:100%!important;top:0;}
您希望它从何处取出钥匙?你想让这个对象拥有一个密钥数组吗?从你展示的代码中无法判断哪些密钥不存在。你想让它从哪里提取密钥?您是否有希望此对象拥有的密钥数组?从您显示的代码中,无法判断哪些密钥不存在。我的javascript版本不支持“for of”。您可以修改它吗?
for(var i=0,n=keys.length;i
;)所以,您能用这个新的修改更新您的答案吗?“for of”在我的javascript版本中不受支持。您可以修改它吗?
for(var i=0,n=keys.length;i
;)所以你能用这个新的修改来更新你的答案吗?谢谢,虽然这是绝对的,但是我的“数据”是我的一个函数的参数,我把它作为输入,所以我只需要在我的函数中处理它。。。。但是我不能在里面包含你的函数,这有什么问题?要么从我建议的函数(
新集合(..
)中获取代码,要么将函数放入代码中,并从当前函数中调用它。即使您将我的函数放入函数中,然后调用它,它也应该可以工作。谢谢,尽管这是绝对工作,但通过我的“数据”是我的一个函数的参数,我把它作为输入,所以我只需要在我的函数中处理它…但是我不能在其中包含你的函数…这有什么问题吗?或者从我建议的函数中获取代码(
新集(…
)或者将函数放在代码中,并从当前函数中调用它。即使您将我的函数放在函数中,然后调用它,它也应该可以工作。