js吧键值对变成对象_如何在JavaScript中将Object {}转换为键值对的Array []

哆啦的时光机

Object.entries()返回一个数组,其元素是与[key, value]直接找到的可枚举属性对相对应的数组object。属性的顺序与手动循环对象的属性值所给出的顺序相同。- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries#Description该Object.entries函数几乎返回您要求的确切输出,除了键是字符串而不是数字。const obj = {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0};console.log(Object.entries(obj));如果您需要键是数字,您可以将结果映射到具有回调函数的新数组,该函数用从中强制转换的数字替换每对中的键。const obj = {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0};const toNumericPairs = input => {    const entries = Object.entries(input);    return entries.map(entry => Object.assign(entry, { 0: +entry[0] }));}console.log(toNumericPairs(obj));我使用箭头函数和Object.assign上面示例中的映射回调,以便我可以通过利用Object.assign返回所分配对象的事实将其保留在一条指令中,并且单个指令箭头函数的返回值是指令的结果。这相当于:entry => {    entry[0] = +entry[0];    return entry;}正如@TravisClarke在评论中所提到的,地图功能可以缩短为:entry => [ +entry[0], entry[1] ]但是,这将为每个键值对创建一个新数组,而不是修改现有数组,从而使创建的键值对数组的数量加倍。虽然原始条目数组仍可访问,但它及其条目不会被垃圾回收。现在,即使使用我们的就地方法仍然使用两个保存键值对的数组(输入和输出数组),数组的总数只会改变一个。输入和输出数组实际上并没有用数组填充,而是对数组的引用,这些引用在内存中占用的空间可以忽略不计。修改每个键值对就地产生的内存增长可忽略不计,但需要输入更多字符。为每个键值对创建一个新数组会导致所需的内存量翻倍,但需要输入少一些字符。您可以更进一步,通过就地修改条目数组而不是将其映射到新数组来完全消除增长:const obj = {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0};const toNumericPairs = input => {  const entries = Object.entries(obj);  entries.forEach(entry => entry[0] = +entry[0]);  return entries;}console.log(toNumericPairs(obj));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值