从javascript中的键和字符串值获取objectId

从javascript中的键和字符串值获取objectId,javascript,arrays,Javascript,Arrays,我正在尝试获取要存储在DB中的一个对象数组的对象ID。 有什么想法吗 //Input var data = [{ id: 1, name: 'a' }, { id: 2, name: 'b' } ]; 这就是我想要得到的对象的值,现在我想要得到的是我想要得到的id值 预期产出 如果结果是'a',那么我应该得到值'1' 如果结果是“b”,那么我应该得到值“2” 有人有什么

我正在尝试获取要存储在DB中的一个对象数组的对象ID。 有什么想法吗

 //Input
  var data = [{
          id: 1,
          name: 'a'
      },
      {
          id: 2,
          name: 'b'
      }
  ];
这就是我想要得到的对象的值,现在我想要得到的是我想要得到的id值

预期产出

如果结果是'a',那么我应该得到值'1'

如果结果是“b”,那么我应该得到值“2”


有人有什么想法来做这件事吗。。请帮帮我,伙计们

我会把数组变成一个对象,这样你就可以访问
obj[name]
来获取
id

var数据=[
{id:1,名称:'a'},
{id:2,名称:'b'},
{id:3,名称:'ccc'}
];
const obj=data.reduce((a,{id,name})=>{
a[名称]=id;
返回a;
}, {});
控制台日志(obj.a);
控制台日志(obj.b);
//如果名称在变量中:
常数名称='ccc';

console.log(obj[name])
我将把数组变成一个对象,这样您就可以访问
obj[name]
来获取
id

var数据=[
{id:1,名称:'a'},
{id:2,名称:'b'},
{id:3,名称:'ccc'}
];
const obj=data.reduce((a,{id,name})=>{
a[名称]=id;
返回a;
}, {});
控制台日志(obj.a);
控制台日志(obj.b);
//如果名称在变量中:
常数名称='ccc';
console.log(obj[name])试试这个

var数据=[{
id:1,
姓名:“a”
},
{
id:2,
姓名:'b'
}
];
var valuse=data.find(函数(el){
返回el.name=='b';
});
控制台日志(valuse.id)试试这个

var数据=[{
id:1,
姓名:“a”
},
{
id:2,
姓名:'b'
}
];
var valuse=data.find(函数(el){
返回el.name=='b';
});
控制台日志(valuse.id)您可以使用
.find()

var-arr=[{
id:1,
姓名:“a”
},
{
id:2,
姓名:'b'
}
];
函数getId(数据、名称){
返回typeof name==='string'?
data.find(e=>name==e.name)。id:
data.filter(e=>name.includes(e.name)).map(e=>e.id)
}
var result1=getId(arr,['a','b']);
var result2=getId(arr,'a');
console.log(result1)
console.log(result2)
您可以使用
.find()

var-arr=[{
id:1,
姓名:“a”
},
{
id:2,
姓名:'b'
}
];
函数getId(数据、名称){
返回typeof name==='string'?
data.find(e=>name==e.name)。id:
data.filter(e=>name.includes(e.name)).map(e=>e.id)
}
var result1=getId(arr,['a','b']);
var result2=getId(arr,'a');
console.log(result1)

console.log(result2)
nice hack!喜欢函数式编程很好的黑客!喜欢函数式编程谢谢大家!,我还有一个问题,如果数组中的字符串值像let say
var arr=['a','b'],该怎么办
data.find(e=>e.name==arr)
结果可以是:[1,2]我相应地编辑了答案,如果你传递了一个数组,你需要
includes()
找到匹配的元素以及
filter()
是,工作正常。**谢谢你们帮助我**非常感谢大家!,我还有一个问题,如果数组中的字符串值像let say
var arr=['a','b'],该怎么办
data.find(e=>e.name==arr)
结果可以是:[1,2]我相应地编辑了答案,如果你传递了一个数组,你需要
includes()
找到匹配的元素以及
filter()
是,工作正常。**谢谢你们帮助我**