【问题标题】:Search from an array of objects via array of string to get array of objects通过字符串数组从对象数组中搜索以获取对象数组
【发布时间】:2016-08-31 14:15:17
【问题描述】:

大家好,

我有两个数组如下:

var arr1 = [ '1956888670', '2109171907', '298845084' ];
var arr2 = [ 
  { KEY: '1262875245', VALUE: 'Vijay Kumar Verma' },
  { KEY: '1956888670', VALUE: 'Sivakesava Nallam' },
  { KEY: '2109171907', VALUE: 'udm analyst' },
  { KEY: '298845084', VALUE: 'Mukesh Nagora' },
  { KEY: '2007285563', VALUE: 'Yang Liu' },
  { KEY: '1976156380', VALUE: 'Imtiaz Zafar' },
  ];

arr1 有键,arr2 有键和值。 我只想输出 arr1 中存在的那些键的键和值。 因此我的输出应该是,

[{ KEY: '1956888670', VALUE: 'Sivakesava Nallam' },
  { KEY: '2109171907', VALUE: 'udm analyst' },
  { KEY: '298845084', VALUE: 'Mukesh Nagora' },]

请求您帮助编写一个函数以使用 javascript 获取所需的输出。提前致谢。

【问题讨论】:

  • 嗯...简单的for循环?
  • 听起来你想循环遍历 arr1 (应该看看 for 循环以及如何找到数组的长度)。该结构就像对于 arr1 中的每个值,(取决于 arr1 的值),从 arr2 获取一个值
  • 类似的问题不胜枚举。在搜索中 OP 应该推力。

标签: javascript arrays string object javascript-objects


【解决方案1】:
 var arr1 = [ '1956888670', '2109171907', '298845084' ];
var arr2 = [ 
  { KEY: '1262875245', VALUE: 'Vijay Kumar Verma' },
  { KEY: '1956888670', VALUE: 'Sivakesava Nallam' },
  { KEY: '2109171907', VALUE: 'udm analyst' },
  { KEY: '298845084', VALUE: 'Mukesh Nagora' },
  { KEY: '2007285563', VALUE: 'Yang Liu' },
  { KEY: '1976156380', VALUE: 'Imtiaz Zafar' },
  ];


  result = arr2.filter( function(obj) {
    return arr1.indexOf(obj.KEY) >= 0;
  });

  console.info(result);

【讨论】:

    【解决方案2】:

    你可以试试filter - Array.prototype.filter():

    var output = arr2.filter(function(item) {
      return arr1.indexOf(item.KEY) >= 0;
    });
    

    【讨论】:

      【解决方案3】:

      您可以使用Set 进行过滤。

      var arr1 = ['1956888670', '2109171907', '298845084'],
          arr2 = [{ KEY: '1262875245', VALUE: 'Vijay Kumar Verma' }, { KEY: '1956888670', VALUE: 'Sivakesava Nallam' }, { KEY: '2109171907', VALUE: 'udm nalyst' }, { KEY: '298845084', VALUE: 'Mukesh Nagora' }, { KEY: '2007285563', ALUE: 'Yang Liu' }, { KEY: '1976156380', VALUE: 'Imtiaz Zafar' }],
          mySet = new Set,
          result;
      
      arr1.forEach(function (a) {
          mySet.add(a);
      });
      
      result = arr2.filter(function (a) {
          return mySet.has(a.KEY);
      });
      
      console.log(result);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-24
        • 1970-01-01
        • 2021-12-15
        • 2018-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多