我正在编写一个代码,我需要在其中进行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'],
]
答案 0 :(得分:2)
将评论扩展为答案。
在this question中解决了从Javascript数组中删除undefined
值的问题,最简单的方法是使用filter
函数(ES6)。
data.filter(d => d !== undefined)
将返回删除了undefined
值的数组。
另请注意,undefined
值首先位于数组中的原因是return nothing returns undefined
in Javascript。