Javascript 按类型筛选数组对象,并将键值与对象进行比较
我有点被困在这里,正在寻找一个可能的简单解决方案 我有一个像下面这样的物体Javascript 按类型筛选数组对象,并将键值与对象进行比较,javascript,angular,typescript,Javascript,Angular,Typescript,我有点被困在这里,正在寻找一个可能的简单解决方案 我有一个像下面这样的物体 personObj = { catname: "somecat" ,catname2: "somecat", dogname: "ruff", horsename: "sam"}; 然后arrayObject像 personArr = [ { key: "a1", value: "catname" type: "cat" }, { key: "a2", value: "catname2", type: "ca
personObj = { catname: "somecat" ,catname2: "somecat", dogname: "ruff", horsename: "sam"};
然后arrayObject
像
personArr = [
{ key: "a1", value: "catname" type: "cat" },
{ key: "a2", value: "catname2", type: "cat" },
{ key: "a3", value: "somedog" type: "dog" },
{ key: "a4", value: "horsename" type : "horse }
];
如何创建一个函数,在personArr
中按类型过滤所有值,然后检查是否有personObj
键与personArr
值匹配,如果是,则返回布尔值
filterAndCheckMatchedObj('cat', personObj) {
//logic
// Filtered by cat 2 matches (catname and catname2)
return true
}
我用的是角4和离子
这有意义吗?任何帮助都将不胜感激 试试这个
var personObj={catname:“somecat”,catname2:“somecat”,dogname:“ruff”,horsename:“sam”}
var personArr=[{“key”:“a1”,“value”:“catname”,“type”:“cat”},{“key”:“a2”,“value”:“catname2”,“type”:“cat”},{“key”:“a3”,“value”:“somedog”,“type”:“dog”},{“key”:“a4”,“value”:“horsename”,“type”:“horse”});
函数查找(类型,personObj){
返回personArr.filter(item=>item.type==type).filter(item=>(personObj中的item.value)).length!==0
}
log(find('cat',personObj))
为了过滤parsonArr,您需要它是一个数组:
personArr = [
{ key: "a1", value: "catname", type: "cat" },
{ key: "a2", value: "catname2", type: "cat" },
{ key: "a3", value: "somedog", type: "dog" },
{ key: "a4", value: "horsename", type : "horse" }
];
请注意,每个key:value都需要分隔的逗号(您有时会漏掉它)。此外,您忘了用“
在函数声明中,您不传递参数,只需声明它们:
filterAndCheckMatchedObj(animalType, personObj) {
const filteredParsonArr = personArr.filter(person => person.type === animalType);
}
现在您需要personArr和personObj之间的任何关系
var personObj = { catname: "somecat",
catname2: "somecat",
dogname: "ruff",
horsename: "sam"
};
最后一件事:
我建议您更改变量名称。
让personArr和他的物品描述动物是没有意义的
总而言之:
const personArr=[
{键:“a1”,值:“catname”,类型:“cat”},
{键:“a2”,值:“catname2”,类型:“cat”},
{键:“a3”,值:“somedog”,类型:“dog”},
{键:“a4”,值:“horsename”,类型:“horse”}
];
const personObj={catname:“somecat”,catname2:“somecat”,dogname:“ruff”,horsename:“sam”}
函数过滤器和检查匹配Dobj(动物类型,personObj){
返回personArr.some(animal=>animal.type===animalType&&
(以personObj表示的动物价值)
);
}
警报(filterAndCheckMatchedObj('cat',personObj));//真的
警报(filterAndCheckMatchedObj('fish',personObj));//false
很难理解您在这里想要实现的目标。但据我所知,你:
要为类型
筛选角色
然后,您需要检查personObj
中的键
是否与过滤后的personArr
中的键的值
匹配
在这种情况下,返回true
。否则返回false
因此,请尝试一下:
var personObj={
猫名:“somecat”,
猫名2:“某只猫”,
狗名:“拉夫”,
马名:“山姆”
};
var personArr=[
{“key”:“a1”,“value”:“catname”,“type”:“cat”},
{“键”:“a2”,“值”:“catname2”,“类型”:“cat”},
{“key”:“a3”,“value”:“somedog”,“type”:“dog”},
{“键”:“a4”,“值”:“马名”,“类型”:“马”}
];
函数查找(类型,personObj){
var filteredArray=personArr.filter(item=>item.type==type);
var objectKeys=Object.keys(personObj);
var arrayValues=filteredArray.map(item=>item.value);
返回objectKeys.filter(元素=>ArrayValue.includes(元素)).length>0;
}
console.log(find('cat',personObj))
不是有效的JSON->personArr
如何返回personArr.some(item=>item.type==type&(personObj中的item.value))代码>