相关疑难解决方法(0)

如何在JavaScript中将Object {}转换为键值对的Array []

我想转换这样的对象:

{"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中将对象转换为键值对数组?

javascript arrays type-conversion

196
推荐指数
13
解决办法
48万
查看次数

未捕获的TypeError:Object.values不是函数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()

javascript arrays cross-browser object node.js

73
推荐指数
3
解决办法
7万
查看次数

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中引发以下错误:

对象不支持属性或方法"值"

在这里你可以测试它:小提琴.

那么,什么是快速修复?

javascript browser internet-explorer ecmascript-6

55
推荐指数
5
解决办法
5万
查看次数

TypeError:Object.values不是一个函数 - 如何在jest中正确填充babel-preset-env?

升级到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)

但我仍然收到错误消息,帮助!

jestjs

6
推荐指数
1
解决办法
2998
查看次数

获取 Typescript 中命名空间的所有值?

节点版本: 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()的末尾即可。ThingTypevalues()不存在于 TS 中的命名空间或枚举上。我在 Typescript 中的命名空间文档中没有找到任何内容,但我觉得一定有一些东西可以让我轻松获取枚举值。

javascript enums typescript

1
推荐指数
1
解决办法
3903
查看次数