从javascript中的键和字符串值获取objectId [重复]
Posted
技术标签:
【中文标题】从javascript中的键和字符串值获取objectId [重复]【英文标题】:Get objectId from key and string value in javascript [duplicate] 【发布时间】:2018-12-16 17:47:36 【问题描述】:我正在尝试获取对象 ID 以存储在数据库中以获取对象数组。 有什么想法吗?
//Input
var data = [
id: 1,
name: 'a'
,
id: 2,
name: 'b'
];
这是我要获取值的对象,现在我要实现的是从名称中获取 id 值。
预期输出
如果结果是'a'那么我应该得到值'1',
如果结果是'b'那么我应该得到值'2'
任何人对此有任何想法..请帮助我
【问题讨论】:
【参考方案1】:我会把数组变成一个对象,这样你就可以访问obj[name]
来获取id
:
var data = [
id: 1, name: 'a',
id: 2, name: 'b',
id: 3, name: 'ccc'
];
const obj = data.reduce((a, id, name ) =>
a[name] = id;
return a;
, );
console.log(obj.a);
console.log(obj.b);
// if the name is in a variable:
const name = 'ccc';
console.log(obj[name]);
【讨论】:
不错的技巧!喜欢函数式编程【参考方案2】:你可以使用.find()
:
var arr = [
id: 1,
name: 'a'
,
id: 2,
name: 'b'
];
function getId(data, name)
return 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)
【讨论】:
非常感谢大家!,工作就像一个魅力 我还有一个问题,如果数组中的字符串值比如var arr = ['a', 'b'];
data.find(e => e.name === arr);
,结果可以是:[1, 2]
我相应地编辑了答案,如果你传递一个数组,你需要includes()
和filter()
一起找到匹配的元素
是的,工作完美。 ** 谢谢你们帮助我!**【参考方案3】:
试试这个
var data = [
id: 1,
name: 'a'
,
id: 2,
name: 'b'
];
var valuse = data.find(function (el)
return el.name == 'b' ;
);
console.log(valuse.id);
【讨论】:
以上是关于从javascript中的键和字符串值获取objectId [重复]的主要内容,如果未能解决你的问题,请参考以下文章