Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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_Firebase_Ecmascript 6_Firebase Realtime Database - Fatal编程技术网

Javascript 创建json对象以排除未定义的属性

Javascript 创建json对象以排除未定义的属性,javascript,firebase,ecmascript-6,firebase-realtime-database,Javascript,Firebase,Ecmascript 6,Firebase Realtime Database,我有以下代码片段,它在循环中创建了一个JavaScript对象,其中一些属性可能未定义: reader.on('record', function(record) { let p = record.children; let player = {}; // below we create a dynamic key using an object literal obj['name'], this allows use to use // the id as

我有以下代码片段,它在循环中创建了一个JavaScript对象,其中一些属性可能未定义:

reader.on('record', function(record) {

    let p = record.children;
    let player = {};

    // below we create a dynamic key using an object literal obj['name'], this allows use to use
    // the id as the firebase reference id.
    player[p[0].text] = {
        id: parseInt(p[0].text, 10) || "",
        name: p[1].text || "",
        country: p[2].text || ""
    };
};
因此,我的问题是:;例如,有没有更好的方法通过“地图”创建此对象?如果属性未定义,则不要将其添加到对象中

注意:此数据将被发送到Firebase DB,因此任何未定义的值都会引发错误——我的粗略(但有效)方法是将它们作为空字符串添加

下面是我希望看到的JSON示例(请注意,第二个播放器中没有缺少国家):


您可以这样做:

player = JSON.parse(JSON.stringify(player));
这样,你可以使用

player[p[0].text] = {
    id: parseInt(p[0].text, 10),
    name: p[1].text,
    country: p[2].text
};

。。。不要担心未定义的值,因为JSON.stringify不会用未定义的值序列化键…

null
值不会在Firebase中设置,也不会给出错误信息

player[p[0].text] = {
    id: parseInt(p[0].text, 10) || null,
    name: p[1].text || null,
    country: p[2].text || null
};

您可以先检查属性是否已定义,然后仅在属性已定义时添加属性。@PatrickEvans这不是重复的问题,该问题是基于一个单独的参数,即
true
false
,来确定是否应添加属性。此问题基于定义的参数本身的值。除非您向我们展示输入(
记录
)的外观,否则无法回答此问题。另外,您将如何处理
player
对象?
player[p[0].text] = {
    id: parseInt(p[0].text, 10) || null,
    name: p[1].text || null,
    country: p[2].text || null
};