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