如何在JavaScript中将对象{}转换为键值对数组[]

15 浏览
0 Comments

如何在JavaScript中将对象{}转换为键值对数组[]

我想将这样的对象转换成一个键值对的数组,例如:\n{\"1\":5,\"2\":7,\"3\":0,\"4\":0,\"5\":0,\"6\":0,\"7\":0,\"8\":0,\"9\":0,\"10\":0,\"11\":0,\"12\":0}\n\n转换为如下的键值对数组:\n

[[1,5],[2,7],[3,0],[4,0]...].

\n在JavaScript中,如何将对象转换为键值对的数组?

0
0 Comments

如何在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]])这种函数式的方法来简化代码。

以上就是将对象转换为键值对数组的方法以及一些优化技巧。无论你选择哪种方法,都可以根据自己的需求来选择最适合的方式。

0
0 Comments

将一个对象{}转换为键值对数组[]的最佳方法是:

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()可能不会返回正确的键。

0
0 Comments

如何在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中将对象转换为键值对数组的方法。

0