从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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将json对象值变成javascript中的键和值[关闭]

在spring boot中仅获取值而不是JSON响应中的键和值

如何在javascript中获取redis中的所有键和值?

如何获取与php数组中的键和值相关的所有数组值

获取以索引为导向的嵌套字典中的键和值列表

javascript点语法与中括号语法