【问题标题】:Get objectId from key and string value in javascript [duplicate]从javascript中的键和字符串值获取objectId [重复]
【发布时间】:2018-12-16 17:47:36
【问题描述】:

我正在尝试获取对象 ID 以存储在数据库中以获取对象数组。 有什么想法吗?

 //Input
  var data = [{
          id: 1,
          name: 'a'
      },
      {
          id: 2,
          name: 'b'
      }
  ];

这是我要获取值的对象,现在我要实现的是从名称中获取 id 值。

预期输出

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

如果结果是'b'那么我应该得到值'2'

任何人对此有任何想法..请帮助我

【问题讨论】:

    标签: javascript arrays


    【解决方案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);

    【讨论】:

      猜你喜欢
      • 2013-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-08
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多