Javascript-如何使用搜索输入过滤对象值并基于此获取其密钥? 如何访问找到的对象id(id:1) 如何获取查找到的对象键(1:…)

Javascript-如何使用搜索输入过滤对象值并基于此获取其密钥? 如何访问找到的对象id(id:1) 如何获取查找到的对象键(1:…),javascript,Javascript,我试图在数组中找到与搜索输入匹配的1和2个对象(请参见函数)!在我的过滤器中,我在数组中搜索一个对象,并查看其中一个对象是否匹配我的搜索输入。然后基于此,我想找到该对象的id及其键 谢谢 更改对此的搜索: const obj ={ 1: {name:"josh",age:2, symbol: "abc", id: 1}, 2: {name:"mike",age:4, symbol: "efg", id: 2} } const search = (input) => { retur

我试图在数组中找到与搜索输入匹配的1和2个对象(请参见函数)!在我的过滤器中,我在数组中搜索一个对象,并查看其中一个对象是否匹配我的搜索输入。然后基于此,我想找到该对象的id及其键
谢谢

更改对此的搜索:

const obj ={
  1: {name:"josh",age:2, symbol: "abc", id: 1},
  2: {name:"mike",age:4, symbol: "efg", id: 2}
}

const search = (input) => {
return Object.values(obj).filter(item => {
  return item.name.includes(input)
})
}

search("mi")
// returns: [ { name: 'mike', age: 4, symbol: 'efg', id: 2 } ]
您的搜索:

const search = input => Object.values(obj).findIndex(item => item.name.includes(input));
您的身份证:

const index = search('mike');
您的物品:

const id = Object.keys(obj)[index];

更改对此的搜索:

const obj ={
  1: {name:"josh",age:2, symbol: "abc", id: 1},
  2: {name:"mike",age:4, symbol: "efg", id: 2}
}

const search = (input) => {
return Object.values(obj).filter(item => {
  return item.name.includes(input)
})
}

search("mi")
// returns: [ { name: 'mike', age: 4, symbol: 'efg', id: 2 } ]
您的搜索:

const search = input => Object.values(obj).findIndex(item => item.name.includes(input));
您的身份证:

const index = search('mike');
您的物品:

const id = Object.keys(obj)[index];

您做得对,除了使用Object.Value时,您丢失了对象键,请查看下面的演示

const对象={
1:{姓名:“josh”,年龄:2岁,符号:“abc”,id:1},
2:{姓名:“迈克”,年龄:4岁,符号:“efg”,id:2}
}
常量搜索=(输入)=>{
返回Object.keys(obj.filter)(key=>{
返回obj[key].name.includes(输入)
})
.map(foundKey=>({…obj[foundKey],key:foundKey}))
}
常量结果=搜索(“mi”)

console.log(result)
除了使用Object.values时您丢失了对象键外,其他操作都是正确的,请查看下面的演示

const对象={
1:{姓名:“josh”,年龄:2岁,符号:“abc”,id:1},
2:{姓名:“迈克”,年龄:4岁,符号:“efg”,id:2}
}
常量搜索=(输入)=>{
返回Object.keys(obj.filter)(key=>{
返回obj[key].name.includes(输入)
})
.map(foundKey=>({…obj[foundKey],key:foundKey}))
}
常量结果=搜索(“mi”)

console.log(result)
总是返回一个数组,可以是空的,也可以不是空的。您可以通过索引访问此数组中的项。如果您完全确定结果数组中必须只有一个项,则可能通过
search('mi')[0]
访问它。访问第一个元素的操作是类型安全的,因为数组#过滤器的签名保证了这一点。因此它返回一个带有对象的数组,所以您引用数组而不是对象?你有什么问题?始终返回一个数组,无论是否为空。您可以通过索引访问此数组中的项。如果您完全确定结果数组中必须只有一个项,则可能通过
search('mi')[0]
访问它。访问第一个元素的操作是类型安全的,因为数组#过滤器的签名保证了这一点。因此它返回一个带有对象的数组,所以您引用数组而不是对象?你有什么问题?