我有一个对象数组,它将被发送到我的数据库。这些对象是从单独的Api获取的,其中一些对象返回时是空的。如何检查数组中的对象是否为空,然后删除该对象。
我尝试使用for循环遍历对象数组,但最终多次调用post函数并将数组的副本发送到我的数据库。
Promise.all(promises)
.then(values => {
for(let i = 0; i<= values.lenght; i++){
if(Object.keys(values[i]).lenght === 0){
values.splice(i, 1)
}else{postArray(values)}}})
.catch(err => console.log(err))
这会多次发送数组,但仍然不起作用。
发布于 2021-02-24 14:45:57
这是一个使用.filter()和Object.entries().length
删除任何没有条目的对象的代码:
values.filter(o=>Object.entries(o).length);
演示:
const values = [{a:'a',b:'b', c: 'c', d: 'd'},{a:'a',b:undefined, c:undefined, d: 'd'},{a:undefined,b:undefined, c: undefined, d:undefined},{a:'a',b:undefined, c: 'c', d: 'd'},{},{a:undefined,b:undefined, c: undefined, d: undefined},{a:'a',b:'b', c: 'c', d: 'd'},{}];
console.log('Filter out empty objects...');
const result1 = values.filter(o=>Object.entries(o).length);
console.log(result1);
console.log('Filter out objects with no values...');
const result2 = values.filter(o=>Object.values(o).every(v=>v));
console.log(result2);
console.log('Do both filters at once...');
const result3 = values.filter(o=>Object.values(o).every(v=>v) && Object.entries(o).length);
console.log(result3);
发布于 2021-02-23 16:30:46
Promise.all(promises).then(values => {
let postArr = []
for (let i = 0; i <= values.lenght; i++) {
if (Object.keys(values[i]).lenght != 0) {
postArr.push(values[i])
}
}
})
你可以试试这个。
postArr
将是您的最终数组
https://stackoverflow.com/questions/66337025
复制