如何保留JS对象全部键值对并将SUBSCRIBERS数组限制为前5项?
保留JavaScript对象全部键值对并截断指定数组
先看你手里的原对象:
res = { ID_COL: "SAME_START_DATE", ID_TBL: "MQL_FIELD_VALUE", SUBSCRIBERS: [ 2255967, 839748, 957525, 758813, 4062601, 1085163, 414789, 765855, 4135634, 599436, 322862, 2782575, 1318088, 3810363, ] }
你之前写的return Object.values(res)[0].slice(0,5);问题出在:Object.values(res)[0]取的是ID_COL的字符串值,不是SUBSCRIBERS数组,所以这个写法完全没作用。
要保留所有键值对,同时只留SUBSCRIBERS前5个元素,推荐这几种方法:
方法一:扩展运算符(最简洁)
直接复制原对象的所有属性,然后单独覆盖SUBSCRIBERS:
const modifiedRes = { ...res, SUBSCRIBERS: res.SUBSCRIBERS.slice(0, 5) };
slice(0,5)会返回原数组的前5个元素,而且不会修改原数组,原res的数据会保持不变。
方法二:Object.assign
和上面逻辑一致,用Object.assign合并对象:
const modifiedRes = Object.assign({}, res, { SUBSCRIBERS: res.SUBSCRIBERS.slice(0, 5) });
先创建空对象,把原res的属性复制进去,再替换SUBSCRIBERS的值。
方法三:直接修改原对象(不推荐)
如果你不需要保留原对象的数据,可以直接修改:
res.SUBSCRIBERS = res.SUBSCRIBERS.slice(0, 5);
但这种会改变原来的res对象,后续再用原数组就没了,所以一般不建议这么做。
内容的提问来源于stack exchange,提问作者MMJ
相关产品推荐
相关产品推荐

