使用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)代码>请包括尝试过的代码和预期输出。数量:
是否视为空值?请包括尝试过的代码和预期输出。数量:
是否视为空值?