Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查另一个对象内的对象上是否存在值?_Javascript_Object - Fatal编程技术网

Javascript 如何检查另一个对象内的对象上是否存在值?

Javascript 如何检查另一个对象内的对象上是否存在值?,javascript,object,Javascript,Object,我有,这个对象,包含属性,其中包含对象值和其他属性和值。 因此,我需要创建一个函数,该函数允许我作为参数传递,该参数将在对象标记中搜索。我试着用es6+写这篇文章,但没用,谁能帮我 const tags = { '1': { 'id': 'birra', 'name': 'Birra' }, '2': { 'id': 'olio-aromatizzato', 'name': 'Olio Aromatizzato' }, }; const getElementNam

我有,这个对象,包含属性,其中包含对象值和其他属性和值。 因此,我需要创建一个函数,该函数允许我作为参数传递,该参数将在对象标记中搜索。我试着用es6+写这篇文章,但没用,谁能帮我

    const tags = {
  '1': {
'id': 'birra',
'name': 'Birra'
  },
  '2': {
'id': 'olio-aromatizzato',
'name': 'Olio Aromatizzato'
  },

};


 const getElementName = searchKey =>  {
 Object.keys(tags)
            .map(key => tags[key])
            .filter(tag => Object.values(tag).includes(searchKey))
            //return value of tags[key].name
}

const getElementID = searchKey =>  {
 Object.keys(tags)
            .map(key => tags[key])
            .filter(tag => Object.values(tag).includes(searchKey))
            //return value of tags[key].id
}


console.log(getElementName(['birra','birra2']));
如果我传递索引0或1,它会工作,但我需要传递整个数组

search = (data) => {  

 let searchedItems = [];
  data.map((item) => {
    for (const property in tags) {
     if(Object.values(tags[property]).indexOf(item) > -1){
        searchedItems.push(tags[property]);
     }
   };
  });

  return searchedItems;
}
 
const data = search(["Birra","123"]);

我更改了您的
.filter
,因此当tag.name或tag.id==键时,它将返回。在for循环中,我检查函数为每个名称运行时是否有值。如果是,我在计数器上加1

const标记={
'1': {
'id':'birra',
“name”:“Birra”
},
'2': {
'id':'olio aromatizizzato',
'姓名':'芳香油'
},
};
常量getByName=(键)=>{
设elem=Object.keys(标记)
.map(k=>tags[k])
.filter(t=>t.name==key);
返回元素
}
常量getByID=(键)=>{
设elem=Object.keys(标记)
.map(k=>tags[k])
.filter(t=>t.id==key);
返回元素
}
const names=['birra','birra2','birra','birra','barra','borra','birra']//3倍于birra(所以结果应该是3)。
设计数器=0;
for(设n=0;n0){
柜台++
log(getByName(名称[n]))
}
}

console.log('Total matches:'+counter)
我不能使用一些,因为它与ie11不兼容,但我的函数可以工作,我需要传递整个数组的ad参数,单索引工作OK,但是是一样的,我需要传递数组的索引,而不仅仅是一个值或索引。你说最初必须搜索值,索引是什么?0或1?console.log(getElementName(['birra','birra2']);好的,我在getElementName(['birra','birra2'])中有一个for:tag,如何打印所有匹配项?我的函数中需要一个for循环,因为indexof只接受1个元素而不是元素数组sok,我在getElementName(['birra','birra2'])中有一个for:tag标签,如何打印所有匹配项?@Mantegnous我添加了一个for循环来检查是否找到匹配项,这就是你的意思吗?@Bandy不,我在html中已经有一个for来传递值,但是只允许1个值,我需要传递一个完整的值array@Mantegnous所以你只想传递具有唯一id的数组?我不想知道数组名是否包含3倍的birra,我需要知道对象中包含的位置。现在函数只对一个值起作用,我需要传递另一个值,而不使用另一个索引调用函数。