Javascript地图对象值

javascript map object values

本文关键字:对象 地图 Javascript      更新时间:2023-09-26

我有一个对象数组:

[{a:1;b:2},{a:3;b:4},{a:5;b:6},{a:7;b:8},{a:9;b:10}]

输入是a的值,比如1,我希望输出是对应的b的值,比如返回2。

我有一个简单的方法来遍历数组并返回结果。我想知道是否有更好的解决方案?例如,将数组映射到a的值的数组,并获得输入的索引,然后使用所获得的索引获得输出。

另一种解释是a的值是相同的,它们不是值,用例子来说明问题。

的例子:

INPUT: 1 OUTPUT:2
INPUT: 3 OUTPUT:4
INPUT: 5 OUTPUT:6
INPUT: 7 OUTPUT:8

我的代码是这样的:

var test=function(obj){
    var a=obj.map(function(item){
        return item.a;
    })
    return obj[a.indexof("1")].b;
}

您可以预处理对象数组以创建单个对象,该对象将保存a的值作为键,b的值作为对应值,Array.prototype.reduce,如下所示

> var d = [{a: 1, b: 2}, {a: 3, b: 4}, {a: 5, b: 6}, {a: 7, b: 8}, {a: 9, b: 10}];
undefined
> var lookup = d.reduce(function (result, currentObject) {
...     result[currentObject.a] = currentObject.b;
...     return result;
... }, {});
undefined
> lookup
{ '1': 2, '3': 4, '5': 6, '7': 8, '9': 10 }

那么您可以从lookup中获得与数字相对应的值,如下所示

> lookup[5]
6
> lookup[9]
10

如果您要查找的值不存在于lookup中,您将得到undefined

> lookup[11]
undefined

这是您想要的。但是,当数组中有更多的对象与a匹配指针时,您需要考虑可能的情况。

function getBbyA(input, needle) {
    for (var index in input) {
        if (input[index].a === needle) {
            return input[index].b;
        }
    }
    return null;
}

var arr = [{a:1,b:2},{a:3,b:4},{a:5,b:6},{a:7,b:8},{a:9,b:10}];
function getIt(num){
  return arr.filter(function(item){
    return item.a === num;
  }).pop().b
}
alert(getIt(5));

我觉得这很好

var obj = [{a:1,b:2},{a:3,b:4},{a:5,b:6},{a:7,b:8},{a:9,b:10}];
function get_it(_v){
    for(x=0;x<obj.length;x++) if(obj[x].a == _v) return obj[x].b;
}
console.log(get_it(prompt('Insert your number:')));