克隆对象JSON,但直到其第5个键值

时间:2019-06-19 14:36:50

标签: javascript

我有一个包含10个以上键值的JSON,我需要为其创建一个副本,但将其限制为第5个键值。

输入:

var object1 = {
  "1a": 1,
  "2b": 2,
  "3c": 1,
  "4d": 2,
  "5e": 1,
  "6f": 2,
  "7g": 1,
  "8h": 2,
  "9i": 1,
  "10j": 2
};

所需的输出:

var object2 = {
  "1a": 1,
  "2b": 2,
  "3c": 1,
  "4d": 2,
  "5e": 1,
};

我正在考虑使用for直到10号来为每个密钥创建一个新密钥。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

您可以对条目数组进行切片,并使用Object.fromEntries重建一个新对象。

var object = { "1a": 1, "2b": 2, "3c": 1, "4d": 2, "5e": 1, "6f": 2, "7g": 1, "8h": 2, "9i": 1, "10j": 2 },
    result = Object.fromEntries(Object.entries(object).slice(0, 5));
    
console.log(result);

Object.assign相同。

var object = { "1a": 1, "2b": 2, "3c": 1, "4d": 2, "5e": 1, "6f": 2, "7g": 1, "8h": 2, "9i": 1, "10j": 2 },
    result = Object.assign({}, ...Object
        .entries(object)
        .slice(0, 5)
        .map(([k, v]) => ({ [k]: v }))
    );
    
console.log(result);

答案 1 :(得分:1)

您可以轻松地使用类似这样的东西,通过使用reduce方法,这是一个相对标准的实现。

此解决方案的优点在于它非常简单,即使是初学者也可以理解它。

var object1 = {
  "1a": 1,
  "2b": 2,
  "3c": 1,
  "4d": 2,
  "5e": 1,
  "6f": 2,
  "7g": 1,
  "8h": 2,
  "9i": 1,
  "10j": 2
};

var object2 = Object.keys(object1).reduce((o, k, i) => {
  i < 5 ? o[k] = object1[k] : null;
  return o;
}, {});

console.log(object2);