我想转换这样的对象:
{"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0}
Run Code Online (Sandbox Code Playgroud)
成为一组键值对,如下所示:
[[1,5],[2,7],[3,0],[4,0]...].
Run Code Online (Sandbox Code Playgroud)
如何在JavaScript中将对象转换为键值对数组?
我有一个简单的对象,如下所示:
var countries = {
"Argentina":1,
"Canada":2,
"Egypt":1,
};
Run Code Online (Sandbox Code Playgroud)
我需要创建两个数组.第一个数组是来自对象的所有键的数组.我创建了这个数组:
var labels = Object.keys(countries);
Run Code Online (Sandbox Code Playgroud)
这很好用.我获得了一系列国家.现在当我尝试从值创建数组时...
var labels = Object.values(countries);
Run Code Online (Sandbox Code Playgroud)
我收到此错误: Uncaught TypeError: Object.values is not a function JavaScript
我不知道我做错了什么.我console.log countries在声明之前labels和之后的console.log 并且对象保持不变.我该如何正确使用Object.values()?
我正在寻找该Object.values()功能的替代版本.
如此处所述,Internet Explorer不支持该功能.
执行以下示例代码时:
var obj = { foo: 'bar', baz: 42 };
console.log(Object.values(obj)); // ['bar', 42]
Run Code Online (Sandbox Code Playgroud)
它适用于Firefox和Chrome,但在IE11中引发以下错误:
对象不支持属性或方法"值"
在这里你可以测试它:小提琴.
那么,什么是快速修复?
升级到Jest v20之后我收到以下错误,babel-polyfill由于内存泄漏,他们删除了自动:
TypeError: Object.values is not a function
我知道我现在需要自己填充这个,我正在使用babel-preset-env并拥有以下.babelrc文件:
"env": {
"development": {
"plugins": ["transform-react-jsx-source"]
},
"test": {
"presets": [
"react",
"stage-3",
["env", {
"targets": {
"browsers": [
"firefox >= 36",
"chrome >= 38",
"opera >= 25",
"safari >= 9",
"ios >= 9"
],
"node": "6.11.4"
},
"useBuiltIns": "usage",
"include": ["es7.object.values"],
"debug": true
}],
"jest"
],
"plugins": [
"transform-class-properties"
],
}
}
Run Code Online (Sandbox Code Playgroud)
我可以看到es7.object.values在调试输出中正在填充:
Using polyfills:
...
es7.object.values {"chrome":"38","firefox":"36","ios":"9","safari":"9","node":"6.11.4"}
Run Code Online (Sandbox Code Playgroud)
但我仍然收到错误消息,帮助!
节点版本: 6.11.3
打字稿版本: 2.1.6
我们的项目中有很多枚举,大部分看起来像这样:
export type ThingType = "thing1" | "thing2";
export namespace ThingType {
export const THING_ONE = "thing1";
export const THING_TWO = "thing2";
}
Run Code Online (Sandbox Code Playgroud)
我想在端点中向需要这些字符串值的端点的使用者公开这些值。所以我创建了一个如下所示的端点:
const enums = {
thingType: ThingType,
...
}
Run Code Online (Sandbox Code Playgroud)
返回的 json 看起来像:
"data": {
"thingType": {
"THING_ONE": "thing1",
"THING_TWO": "thing2"
}
}
Run Code Online (Sandbox Code Playgroud)
我希望它的输出如下:
"data": {
"thingType": ["thing1", "thing2"]
}
Run Code Online (Sandbox Code Playgroud)
对于普通的 javascript 对象,这相当简单,我只需添加到端点values()的末尾即可。ThingType但values()不存在于 TS 中的命名空间或枚举上。我在 Typescript 中的命名空间文档中没有找到任何内容,但我觉得一定有一些东西可以让我轻松获取枚举值。
javascript ×4
arrays ×2
browser ×1
ecmascript-6 ×1
enums ×1
jestjs ×1
node.js ×1
object ×1
typescript ×1