Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript映射对象值_Javascript_Arrays_Object - Fatal编程技术网

javascript映射对象值

javascript映射对象值,javascript,arrays,object,Javascript,Arrays,Object,我有一个对象数组: [{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的值是相同的,它们不是值,用例子来说明这个问题 例如: 输入:1输出:2 输入:3输出:4 输入:5输出:6 输入:7输出:8 我的代码是这样的:

我有一个对象数组:

[{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的值是相同的,它们不是值,用例子来说明这个问题

例如:

输入:1输出:2
输入:3输出:4
输入:5输出:6
输入:7输出:8
我的代码是这样的:

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

我想那会很好

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:')));
varobj=[{a:1,b:2},{a:3,b:4},{a:5,b:6},{a:7,b:8},{a:9,b:10}];
函数get_it(_v){

对于(x=0;x,您可以预处理对象数组以创建单个对象,该对象将
a
的值作为键,将
b
的值作为对应值,如下所示

> 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[5]
6
> lookup[9]
10
然后,您可以从
查找
中获得与数字对应的值,如下所示

> 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[5]
6
> lookup[9]
10
如果您要查找的值在
查找中不存在
,您将得到
未定义

> lookup[11]
undefined

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

function getBbyA(input, needle) {
    for (var index in input) {
        if (input[index].a === needle) {
            return input[index].b;
        }
    }
    return null;
}
vararr=[{a:1,b:2},{a:3,b:4},{a:5,b:6},{a:7,b:8},{a:9,b:10}];
函数getIt(num){
返回arr.filter(函数(项){
返回项。a==num;
}).pop().b
}

警报(getIt(5));
Uhm,
{1:2,3:4,5:6,7:8}
等?您希望有多少数组元素?@thefourtheye所以我想得到与a的输入相对应的b值。所以如果我的输入是5,我想返回6,如果输入是9,我想返回10