gpt4 book ai didi

javascript - 如何从键值对数组创建对象?

转载 作者:IT王子 更新时间:2023-10-29 03:06:34 25 4
gpt4 key购买 nike

在 Python 中,可以向 dict1 构造函数传递一系列键值对:

>>> dict([['name', 'Bob'], ['age', 42], ['breakfast', 'eggs']])
{'age': 42, 'name': 'Bob', 'breakfast': 'eggs'}

除了为此目的定义我自己的函数之外,我想不出任何方法在 JavaScript 中做这种事情:

function pairs_to_object(pairs) {
var ret = {};
pairs.forEach(function (p) { ret[p[0]] = p[1]; });
return ret;
}

但我是一个 JS 菜鸟......是否有任何内置的东西可以用于这种 pairs-to-object 的转换?

1 出于这个问题的目的,我将 Python 字典视为 JS 对象的 Python 对应物,当然,相似性仅限于它们都是键值集合。

最佳答案

Object.fromEntries完成工作。它是通过 EcmaScript2019 添加到语言中的。

如果您不支持该功能,您可以使用以下 ES2015 代码自行定义它:

Object.fromEntries = arr => Object.assign({}, ...Array.from(arr, ([k, v]) => ({[k]: v}) ));

一个好处是这个方法与Object.entries相反(ES2017),所以现在你可以在对象和数组表示之间来回切换:

const arr = [['name', 'Bob'], ['age', 42], ['breakfast', 'eggs']];
const obj = Object.fromEntries(arr);
console.log(obj);
// ... and back:
const arr2 = Object.entries(obj);
console.log(arr2); // copy of the original array (omitting duplicate keys)
.as-console-wrapper { max-height: 100% !important; top: 0; }

ES6 map

键/值对有一个替代普通对象的方法:Map .

它的构造函数接受对数组格式:

// Demo:
const arr = [['name', 'Bob'], ['age', 42], ['breakfast', 'eggs']];

const mp = new Map(arr);

// Get one particular value:
console.log(mp.get('age'));
// Get all the keys:
console.log(...mp.keys());
// Get all the values:
console.log(...mp.values());
// Get all the key/value pairs:
console.log(...mp.entries());

如果您确实需要一个普通对象,那么这没有用,但 Map 可能是一个可行的替代方案。

关于javascript - 如何从键值对数组创建对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20059995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com