在对象内搜索数组的值

时间:2018-04-05 15:42:16

标签: javascript arrays object

我有以下对象: -

var list = {
  nums: [
    [117],
    [108]
  ],
  numsset: [
    [2256, 2265],
    [234],
    [3445, 3442]
  ]
};

如果我在页面上有一个输入字段,客户输入了一个数字,那么我如何能够在该对象中搜索该值并返回密钥,例如。

Input      Returned
108        nums
3445       numsset
2872       
2265       numsset

我试图循环,但它没有产生所需的结果。

非常感谢任何帮助,并提前感谢您。

2 个答案:

答案 0 :(得分:1)

以下是工作代码:

const list = {
  nums: [
    [117],
    [108]
  ],
  numsset: [
    [2256, 2265],
    [234],
    [3445, 3442]
  ]
};

const findElement = (value) => {
  let foundKey = '';
  
  Object.keys(list).some((key) => {
    const array = list[key];
    
    const found = array.some(element => element.includes(value));
    
    if (found) {
    	foundKey = key;
      return true;
    }
    
    return false;
  })
  
  return foundKey;
}

console.log(findElement(2256));
console.log(findElement(108));
console.log(findElement(222));

答案 1 :(得分:0)

您可以构建一个哈希表并存储给定数字的键。

var list = { nums: [[117], [108]], numsset: [[2256, 2265], [234], [3445, 3442]] },
    keys = {};

Object.keys(list).forEach(k => list[k].forEach(a => a.forEach(v => keys[v] = k)));

console.log(keys);