下划线:如何 return 按数组键的所有值
Underscore: How to return all values by array with keys
我有一个包含很多 key : value
的大对象,并且我有一个包含来自该对象的一些键的数组。
如何通过下划线 return 这个 keys(array)
的值?
我尝试了一些这样的,但它很牛**
_.find(objectwithkeysandvalues , function(value){
return _.intersection(value,arraywithekeys)
});
此任务不需要 Underscore。相反,您可以使用 map
函数创建一个新数组,其中包含由旧数组中的键指定的值:
var myValues = keys.map(function (key) {
return myObject[key]
});
您只需要 map 每个 value
从您的键数组到 yourBigObject[value]
。
在下划线中,它看起来像这样:
var keys = [ ... ]; // Keys from your big object
var obj = { ... }; // Your big object
var values = _.map(keys, function(value, index) {
return obj[value];
});
参见 this fiddle 进行实验。
这是一个使用即将推出的 EcmaScript 7 Array Comprehensions 的解决方案,今天可通过 Babel.js 获得。
试一试:Array Comprehensions Example.
ES7:
var obj = {
"key1": 1,
"key2": 2,
"key3": 3
}
var arr = ["key1"];
var values = [for(key of arr) obj[key]];
console.log(values);
我有一个包含很多 key : value
的大对象,并且我有一个包含来自该对象的一些键的数组。
如何通过下划线 return 这个 keys(array)
的值?
我尝试了一些这样的,但它很牛**
_.find(objectwithkeysandvalues , function(value){
return _.intersection(value,arraywithekeys)
});
此任务不需要 Underscore。相反,您可以使用 map
函数创建一个新数组,其中包含由旧数组中的键指定的值:
var myValues = keys.map(function (key) {
return myObject[key]
});
您只需要 map 每个 value
从您的键数组到 yourBigObject[value]
。
在下划线中,它看起来像这样:
var keys = [ ... ]; // Keys from your big object
var obj = { ... }; // Your big object
var values = _.map(keys, function(value, index) {
return obj[value];
});
参见 this fiddle 进行实验。
这是一个使用即将推出的 EcmaScript 7 Array Comprehensions 的解决方案,今天可通过 Babel.js 获得。
试一试:Array Comprehensions Example.
ES7:
var obj = {
"key1": 1,
"key2": 2,
"key3": 3
}
var arr = ["key1"];
var values = [for(key of arr) obj[key]];
console.log(values);