创建一个没有未定义的json

时间:2018-01-16 09:53:43

标签: javascript json amazon-dynamodb

我正在编写一个代码,我需要在其中进行dynamodb扫描,在那里我需要使用值创建数组响应,当我这样做时,它正在添加undefined。 这是我之前的问题Confused creating a DynamoDB query

的扩展

这是我的代码。

var results = [];
var array=["a","b"];
for (index = 1; index <= 5; ++index) {
        var params1 = {
        TableName: "MyCatTable",
        FilterExpression: "#rule=:rule",
        ExpressionAttributeNames: {
            "#rule": "rule"
        },
        ExpressionAttributeValues: {
            ":rule": String(index)
        }
};
results.push(dynamodb.scan(params1).promise().then(function (data) {
                if (data.Items.length == 2) {
                    var uw = [];
                    console.log("Entered");
                    for (var i = 0; i < 2; i++) {
                        if (array.indexOf(data.Items[i].category) >= 0) {
                            console.log("pushing");
                            uw.push(data.Items[i].category);
                        }
                    }
                    if (uw.length > 1) {
                        return uw;
                    } else return "x";

                } else {
                    return "x";
                }
            }));
        }
    return Promise.all(results);
}).then((data) => {
    console.log("----------------------");
    console.log(data);
}).catch(err => {
    console.log(err)
})

当我运行此代码时,我将输出作为

[
  'x',
  ['a', 'b'],
  ['a', 'b'],
  'x',
  'x'
]

这里当我删除return "x"时,我得到的输出是

[
  undefined,
  ['a', 'b'],
  ['a', 'b'],
  undefined,
  undefined
]

我想知道是否有办法获得

[
  ['a', 'b'],
  ['a', 'b'],
]

1 个答案:

答案 0 :(得分:2)

将评论扩展为答案。

this question中解决了从Javascript数组中删除undefined值的问题,最简单的方法是使用filter函数(ES6)。

data.filter(d => d !== undefined)

将返回删除了undefined值的数组。

另请注意,undefined值首先位于数组中的原因是return nothing returns undefined in Javascript