我有一个包含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号来为每个密钥创建一个新密钥。有什么想法吗?
答案 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);