簡體   English   中英

如何克隆一個只有一些鍵/值的對象?

[英]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) 

forEach overallowedKeys數組

您還可以循環允許的鍵數組以減少代碼。

注意: 在這種方法中,如果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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM