[英]javascript object get array of values from array of keys
我有一个键数组: var keys = ["key1","key2","key3"]
和一个对象数组:
var objArr= [
{"key0":1,"key1":2,"key2":3,"key3":4},
{"key0":5,"key1":6,"key2":7,"key3":8}
]
我希望能够基于键数组从对象数组中获取值。 例如,其输出将为valueArr = [[2,3,4],[6,7,8]]
我尝试了以下方法:
var result = objArr.map(function(a) {
for (var i=0;i<keys.length;i++){
return a[keys[i]];
};
})
但这返回[2,6],因为它只是返回它到达的第一个值。 我不确定如何解决它,因此感谢您的帮助!
在数组中推送value
并从Array#map
返回array
var keys = ["key1", "key2", "key3"]; var objArr = [{ "key0": 1, "key1": 2, "key2": 3, "key3": 4 }, { "key0": 5, "key1": 6, "key2": 7, "key3": 8 }]; var result = objArr.map(function(a) { var arr = []; for (var i = 0; i < keys.length; i++) { arr.push(a[keys[i]]); }; return arr; }); console.log(result);
或使用Array#map
内Array#map
var keys = ["key1", "key2", "key3"]; var objArr = [{ "key0": 1, "key1": 2, "key2": 3, "key3": 4 }, { "key0": 5, "key1": 6, "key2": 7, "key3": 8 }]; var result = objArr.map(function(a) { return keys.map(function(key) { return a[key]; }); }); console.log(result);
不要太早return
,循环只会经历第一个项目:
var result = objArr.map(function(a) {
var resp = [];
for (var i=0;i<keys.length;i++){
resp.push(a[keys[i]]);
};
return resp;
})
作为替代方案 ,你可以使用Object.values()
函数,建议在这里 。 例:
var objArr= [
{"key0":1,"key1":2,"key2":3,"key3":4},
{"key0":5,"key1":6,"key2":7,"key3":8}
];
for(var i in objArr){
objArr[i] = Object.values(objArr[i]);
}
不过,目前Internet Explorer,Opera或Safari不支持此功能
您可以使用嵌套的Array#map
。
var keys = ["key1", "key2", "key3"], objArr = [{ "key0": 1, "key1": 2, "key2": 3, "key3": 4 }, { "key0": 5, "key1": 6, "key2": 7, "key3": 8 }], result = objArr.map(function (a) { return keys.map(function (k) { return a[k]; }); }); console.log(result);
ES6
var keys = ["key1", "key2", "key3"], objArr = [{ "key0": 1, "key1": 2, "key2": 3, "key3": 4 }, { "key0": 5, "key1": 6, "key2": 7, "key3": 8 }], result = objArr.map(a => keys.map(k => a[k])); console.log(result);
您需要将值推送到数组上, return
将立即中断执行并返回值。
尝试这个:
var result = objArr.map(function(a) {
var res = [];
for (var i=0;i<keys.length;i++){
res.push(a[keys[i]]);
};
return res;
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.