如何在JavaScript中将对象{}转换为键值对数组[]
如何在JavaScript中将对象{}转换为键值对数组[]的方法
在JavaScript中,将对象{}转换为键值对数组[]的需求是很常见的。通常情况下,我们希望将对象的键值对转换为数组,以便更方便地进行操作和处理。
在JavaScript中,有一个内置的方法Object.entries()
可以实现这个转换。该方法返回一个数组,其中的元素是与对象中可枚举的属性的键值对数组[key, value]
相对应。这个方法会按照手动循环对象属性值的顺序来排序属性。
以下是一个示例:
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));
这段代码将输出一个包含对象键值对的数组。如果你希望键是数字而不是字符串,你可以使用map
函数将结果转换为一个新的数组,并在回调函数中将键替换为从它中强制转换出来的数字。
以下是一个示例:
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
来定义map
的回调函数。这样可以将多个操作放在一个指令中,并利用Object.assign
返回被分配的对象的特性。这相当于使用entry => { entry[0] = +entry[0]; return entry; }
来定义回调函数。
另外,如果你希望进一步缩短代码,可以将map
函数改为:entry => [ +entry[0], entry[1] ]
。但这样会为每个键值对创建一个新的数组,而不是直接修改现有的数组,从而导致创建的键值对数组数量翻倍。
总结起来,将对象转换为键值对数组的方法有两种:
1. 在现有数组中直接修改每个键值对,这样会导致内存增长,但只需要输入更多的字符。
2. 创建一个新的数组来存储每个键值对,这样会增加所需的内存量,但需要输入更少的字符。
你还可以进一步优化,通过直接修改现有的数组来消除内存增长,而不是将其映射到一个新的数组。以下是一个示例:
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));
这种方法可以避免内存增长,但仍然使用了两个存储键值对的数组(输入数组和输出数组)。不过,输入和输出数组实际上并不是填充了数组,而是填充了对数组的引用,这在内存中占用的空间可以忽略不计。
我们可以使用Object.entries(obj).map(e => [+e[0], e[1]])
这种函数式的方法来简化代码。
以上就是将对象转换为键值对数组的方法以及一些优化技巧。无论你选择哪种方法,都可以根据自己的需求来选择最适合的方式。
将一个对象{}转换为键值对数组[]的最佳方法是:
var 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}; var result = Object.entries(obj); console.log(result);
调用Object.entries(obj),如上所示,将返回键值对[key, value],正如调用者所请求的那样。
或者,您可以调用Object.values(obj),它将仅返回值。
注意:Object.entries将返回[key, value],但键将为字符串,值将有所不同。
使用Object.fromEntries()将键值对[key, value]转换回对象。
Object.values()不会有正确的“键”...假设对象的键都是数字。
问题的出现原因:用户想要将一个对象转换为键值对数组,以便对其进行进一步处理或使用。
解决方法:使用Object.entries(obj)将对象转换为键值对数组。或者,使用Object.fromEntries()将键值对数组转换回对象。如果只需要值而不需要键,则可以使用Object.values(obj)。需要注意的是,如果对象的键是数字,则Object.values()可能不会返回正确的键。
如何在JavaScript中将对象{}转换为键值对数组[]?原因是当我们需要对对象进行遍历或处理时,有时候需要将对象转换为键值对数组的形式。解决方法是使用Object.keys()和map()方法来实现。
代码示例:
var 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} var result = Object.keys(obj).map((key) => [key, obj[key]]); console.log(result);
如果您的键使用的是数字而不是字符串,那么当尝试将键转换为数字时,可能会失败并返回NaN。如果您希望使用字符串作为键,请将返回值从[Number(key), obj[key]]更改为[key, obj[key]],或者按照他们的答案建议使用Object.entries。
对于上述示例,可以通过以下代码将对象转换为键值对数组:
let res ={"5":"ManuscriptRequestId","4":"PublishRequestId","9":"AuthorIdentificationId","1":"VisitRequestId","6":"InformationRequestId","3":"RareDocumnetsRequestId","2":"RarePhotoRequestId","7":"BookPurchaseRequestId","8":"StatmentRequestId"} const dataArray = Object.entries(res).map(([key, value]) => ({ key, value }));
以上就是如何在JavaScript中将对象转换为键值对数组的方法。