使用javascript(Es6,typescript)在对象数组中查找空键

使用javascript(Es6,typescript)在对象数组中查找空键,javascript,arrays,typescript,object,ecmascript-6,Javascript,Arrays,Typescript,Object,Ecmascript 6,我有一个对象数组。在这个对象数组中,我必须找到哪些键具有数组索引的空值。数组列表如下所示: let fruits=[ {name:"apple",quantity:2,price:"" }, {name:"orange",quantity:" ",price:"2"}, {name:"banana",quantity:" ",price:""} ]; 所以这里我必须找到任何一个有空值的对象键,它应该返回带有索引的键。我尝试过使用.findIndex()和其他方法,但不幸的是我

我有一个对象数组。在这个对象数组中,我必须找到哪些键具有数组索引的空值。数组列表如下所示:

let fruits=[
   {name:"apple",quantity:2,price:"" },
   {name:"orange",quantity:" ",price:"2"},
   {name:"banana",quantity:" ",price:""}
];

所以这里我必须找到任何一个有空值的对象键,它应该返回带有索引的键。我尝试过使用
.findIndex()
和其他方法,但不幸的是我不能。我不熟悉es6和打字脚本。我需要检查对象数组中具有空值的键。

假设您希望得到的水果没有
价格值,您需要运行过滤器,因为您的水果是数组

let emptyPriceFruits = fruits.filter((fruit) => !fruit.price)

关于
.filter
-

的附加阅读假设您想要得到的水果没有
价格
值,您需要运行一个过滤器,因为您的水果是一个数组

let emptyPriceFruits = fruits.filter((fruit) => !fruit.price)

附加阅读
.filter
-

这应该可以满足您的需要。它将通过数组“映射”,并为每个对象找到空属性或空字符串的键。然后再次“映射”如此过滤的项,所有找到的键与对象的“id”一起“连接”到一个逗号分隔的列表(属性“f”)中。最后一步,我过滤掉“f”属性实际包含键名的所有对象

让水果=[
{名称:“苹果”,数量:2,价格:},
{名称:“橙色”,数量:,价格:“2”},
{名称:“菠萝”,数量:3,价格:5},
{名称:“香蕉”,数量:,价格:}
];
let empty=fruits.map(f=>
Object.keys(f).filter(k=>!(“”+f[k]).trim())
.map((f,i)=>({id:i,f:f.join(',')}))
.filter(f=>f.f)

console.log(空)
这应该满足您的需要。它将通过数组“映射”,并为每个对象找到空属性或空字符串的键。然后再次“映射”如此过滤的项,所有找到的键与对象的“id”一起“连接”到一个逗号分隔的列表(属性“f”)中。最后一步,我过滤掉“f”属性实际包含键名的所有对象

让水果=[
{名称:“苹果”,数量:2,价格:},
{名称:“橙色”,数量:,价格:“2”},
{名称:“菠萝”,数量:3,价格:5},
{名称:“香蕉”,数量:,价格:}
];
let empty=fruits.map(f=>
Object.keys(f).filter(k=>!(“”+f[k]).trim())
.map((f,i)=>({id:i,f:f.join(',')}))
.filter(f=>f.f)

console.log(空)
请尝试以下示例

let fruits=[
{名称:“苹果”,数量:2,价格:},
{名称:“橙色”,数量:,价格:“2”},
{名称:“香蕉”,数量:,价格:},
];
常量输出=结果。减少((以前的值、当前值、当前索引)=>{
const keys=Object.keys(currentValue).filter((key)=>!currentValue[key]);
if(键长度){
previousValue[currentIndex]=键;
}
返回以前的值;
}, {});

控制台日志(输出)请尝试以下示例

let fruits=[
{名称:“苹果”,数量:2,价格:},
{名称:“橙色”,数量:,价格:“2”},
{名称:“香蕉”,数量:,价格:},
];
常量输出=结果。减少((以前的值、当前值、当前索引)=>{
const keys=Object.keys(currentValue).filter((key)=>!currentValue[key]);
if(键长度){
previousValue[currentIndex]=键;
}
返回以前的值;
}, {});

控制台日志(输出)这个如何,通过获取对象的
条目
,然后使用
过滤器
识别重复值:

var fruits=[{name:“apple”,数量:2,价格:,pal:null},{name:“orange”,数量:,价格:“2”},{name:“banana”,数量:,价格:“}”;
var emptyResult=fruits.map(k=>Object.fromEntries(k).filter([k,v])=>typeof v=='string'&&!v.trim());

console.log(emptyResult)这个如何,通过获取对象的
条目
,然后使用
过滤器
识别重复值:

var fruits=[{name:“apple”,数量:2,价格:,pal:null},{name:“orange”,数量:,价格:“2”},{name:“banana”,数量:,价格:“}”;
var emptyResult=fruits.map(k=>Object.fromEntries(k).filter([k,v])=>typeof v=='string'&&!v.trim());

console.log(emptyResult)请包括尝试过的代码和预期输出。
数量:
是否视为空值?请包括尝试过的代码和预期输出。
数量:
是否视为空值?