[英]How to clone an object but with only some key/values?
我有一个看起来像这样的对象:
{
createdAt: "2016-01-25T04:01:53.282Z"
index: 0
objectId: "56a59e31a633bd0257868cb8"
panoDataRotate: 0
roomModelId: "56a59e242e958a00596a897c"
x: 240
y: 230
}
我想将其克隆到一个只有index ,
x , and
y`的对象中:
{
index: 0
x: 240
y: 230
}
如何使用lodash / Underscore?
使用lodash,您可以使用以下命令:
var obj = {
createdAt: "2016-01-25T04:01:53.282Z",
index: 0,
objectId: "56a59e31a633bd0257868cb8",
panoDataRotate: 0,
roomModelId: "56a59e242e958a00596a897c",
x: 240,
y: 230
};
var newObject = _.pick(obj, ['index', 'x', 'y']);
见这里的文档_.pick()
函数。
还有一个普通的JavaScript解决方案:
var obj = {
createdAt: "2016-01-25T04:01:53.282Z",
index: 0,
objectId: "56a59e31a633bd0257868cb8",
panoDataRotate: 0,
roomModelId: "56a59e242e958a00596a897c",
x: 240,
y: 230
};
var newObject = ['index', 'x', 'y'].reduce(function(result, key) {
result[key] = obj[key];
return result;
}, {});
您可以使用for-in
遍历对象的属性。
var data = { createdAt: "2016-01-25T04:01:53.282Z", index: 0, objectId: "56a59e31a633bd0257868cb8", panoDataRotate: 0, roomModelId: "56a59e242e958a00596a897c", x: 240, y: 230 } var allowedKeys = ["x", "y", "index"]; var result = {}; for (var key in data){ if(allowedKeys.indexOf(key)>-1){ result[key] = data[key]; } } console.log(result)
您还可以循环允许的键数组以减少代码。
注意: 在这种方法中,如果key不存在于data
,则将为undefined
赋值。 但是在以前的方法中,将插入此密钥。
为了演示的目的,我向allowedKeys
数组添加了一个密钥test
。
var data = { createdAt: "2016-01-25T04:01:53.282Z", index: 0, objectId: "56a59e31a633bd0257868cb8", panoDataRotate: 0, roomModelId: "56a59e242e958a00596a897c", x: 240, y: 230 } var allowedKeys = ["x", "y", "index", "test"]; var result = {}; allowedKeys.forEach(function(key){ result[key] = data[key]; }) console.log(result)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.