Javascript 获取JS对象的一部分
不确定问题的标题是否公正,但这里有一个例子。我反对:Javascript 获取JS对象的一部分,javascript,jquery,underscore.js,Javascript,Jquery,Underscore.js,不确定问题的标题是否公正,但这里有一个例子。我反对: var plumber = { name: 'Mario', age: 42, game: 'Super Mario' } 我正在寻找一种使用jQuery或Undescore从该对象获取键和值的优雅方式 // foo() would be desired elegant function plumber.foo('name') #> { name: 'Mario' } // or even better plumber.f
var plumber = {
name: 'Mario',
age: 42,
game: 'Super Mario'
}
我正在寻找一种使用jQuery
或Undescore
从该对象获取键和值的优雅方式
// foo() would be desired elegant function
plumber.foo('name')
#> { name: 'Mario' }
// or even better
plumber.foo(['name','age'])
#> { name: 'Mario', age: 16 }
谢谢大家! 我认为您可以采用两种方法(没有这两个库中的任何一个)。您可以向函数传递一个键数组,也可以向函数传递一个可变数量的参数 使用数组
var plumber = {
name: 'Mario',
age: 42,
game: 'Super Mario'
}
var splitObject = function (obj, keys) {
var holder = {};
keys.forEach(function (d) {
holder[d] = obj[d];
})
return holder;
}
var example = splitObject(plumber, ["name", "age"]);
console.log("example #1", example);
使用可变数量的参数
var variableArguments = function (obj) {
var keys = Array.prototype.slice.apply(arguments).slice(1),
holder = {};
keys.forEach(function (d){
holder[d] = obj[d];
})
return holder;
}
var example2 = variableArguments(plumber, "name", "age");
console.log("example #2", example2);
underline.js
对此可能有自己的功能。你得检查一下文件
编辑:
根据上面的评论,这可能是最合适的函数。underline.js的功能正好做到了这一点:
var new_obj = _.pick(obj, ['name', 'age']);
不确定您在这里到底想要完成什么,因为您的第一个示例可以通过调用:
plumber.name;
如果您不确定输入是什么,并且需要传递变量,您可以这样做:
var arg = 'name';
plumber[arg];
您的第二个示例稍微复杂一些,出于这些目的,我将假设您希望能够传递任意键数组,并返回一个包含每个键/值对的对象。如果您熟悉全局对象的原型设计,可以执行以下操作:
Object.prototype.getValuesFromKeys = function (keys) {
var ret = {};
for (var i = 0; i < arr.length; i++) {
ret[keys[i]] = this[keys[i]];
}
return ret;
};
plumber.getValuesFromKeys(['name','age']);
Object.prototype.getValuesFromKeys=函数(键){
var ret={};
对于(变量i=0;i
如果您希望在不原型化全局对象的情况下实现该功能,可以通过以下方式进行构建:
function getValuesFromKeys(obj, keys) {
var ret = {};
for (var i = 0; i < arr.length; i++) {
ret[keys[i]] = obj[keys[i]];
}
return ret;
};
getValuesFromKeys(plumber, ['name','age']);
函数获取键的值(obj,键){
var ret={};
对于(变量i=0;i
第二部分是您想要实现的目标?好了:。浏览文档通常会有所帮助(我就是这么做的,我实际上并不知道.pick
的存在)。@FelixKling谢谢你,我们可以一次解决很多问题,这看起来像是“天哪,你怎么不知道那个问题”,所以看起来更容易问。无论如何谢谢你。@FelixKling给你一个答案,这样你就得到了rep:)为什么你想让它从年龄中减去26?;)plumber.name
返回'Mario'
,而不是{name:'Mario'}