相关疑难解决方法(0)

如何正确克隆JavaScript对象?

我有一个对象,x.我想把它复制为对象y,这样改变y就不要修改了x.我意识到复制从内置JavaScript对象派生的对象将导致额外的,不需要的属性.这不是问题,因为我正在复制我自己的一个文字构造的对象.

如何正确克隆JavaScript对象?

javascript clone javascript-objects

2922
推荐指数
42
解决办法
176万
查看次数

是否可以向JavaScript对象添加动态命名属性?

在JavaScript中,我创建了一个像这样的对象:

var data = {
    'PropertyA': 1,
    'PropertyB': 2,
    'PropertyC': 3
};
Run Code Online (Sandbox Code Playgroud)

如果在运行时之前未确定属性名称,是否可以在初始创建后为此对象添加更多属性?即

var propName = 'Property' + someUserInput
//imagine someUserInput was 'Z', how can I now add a 'PropertyZ' property to 
//my object?
Run Code Online (Sandbox Code Playgroud)

javascript

695
推荐指数
15
解决办法
58万
查看次数

在JavaScript中有条件地在Array中添加元素

当我尝试使用传播运算符有条件地合并两个对象时,当条件为true或时,它将起作用false

let condition = false;
let obj1 = { key1: 'value1'}
let obj2 = {
  key2: 'value2',
  ...(condition && obj1),
};

// obj2 = {key2: 'value2'};
Run Code Online (Sandbox Code Playgroud)

当我尝试对数组使用相同的逻辑时,它仅在条件为时才起作用true

let condition = true;
let arr1 = ['value1'];
let arr2 = ['value2', ...(condition && arr1)];

// arr2 = ['value2', 'value1']
Run Code Online (Sandbox Code Playgroud)

如果条件为false错误,则抛出:

let condition = false;
let obj1 = { key1: 'value1'}
let obj2 = {
  key2: 'value2',
  ...(condition && obj1),
};

// obj2 = {key2: …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

45
推荐指数
3
解决办法
2526
查看次数

有条件地设置对象属性

是否有一些基于条件设置属性的语法?

data: {
    userId: 7,
    actionId: 36,
    express: (myCondition ? true : null) // does not work
}
Run Code Online (Sandbox Code Playgroud)

我想要express设置为一个值或根本不设置(即,应该没有命名的键express),并且在定义之后没有额外的语句.我知道我可以使用它作为布尔值,但接收方正在使用isset()支票,我想知道我是否可以避免修改它.


编辑:似乎没有直接解决问题的方法如上所述.以下是密切的建议:

JSON.stringify(Chris Kessel,dystroy):

var json = JSON.stringify( {
    data: {
        userId: 7,
        actionId: 36,
        express: (myCondition ? true : null)
    }
});
Run Code Online (Sandbox Code Playgroud)

一个匿名函数(Paulpro):

var data = new function(){
    this.userId = 7;
    this.actionId = 36;
    myCondition && (this.express = true);
};
Run Code Online (Sandbox Code Playgroud)

额外声明(x4rf41):

data: {
    userId: 7,
    actionId: 36
}
if(myCondition) data["express"] = …
Run Code Online (Sandbox Code Playgroud)

javascript

42
推荐指数
4
解决办法
4万
查看次数

为什么document.all麻痹?

document.all 是DOM中的非基本对象,是虚假的.

例如,此代码不执行任何操作:

if (document.all) {
    alert("hello");
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么会这样吗?

javascript dom

36
推荐指数
4
解决办法
2万
查看次数

ES6/ES7中"可选"对象键的简洁/简洁语法?

ES6/ES7 中已经有很多很酷的功能来定义Javascript对象.但是,以下模式在Javascript中很常见:

const obj = { 
  requiredKey1: ..., 
  requiredKey2: ... 
};

if (someCondition) { 
  obj.optionalKey1 = ...;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法用可选键和必需键同时定义对象?

javascript ecmascript-6 ecmascript-7 ecmascript-next

29
推荐指数
2
解决办法
7472
查看次数

将道具传递给素材UI样式

给出如下卡片代码: 卡片

如何更新卡片样式或任何材质UI样式

    const styles = theme => ({
    card: {
    minWidth: 275,
  },
Run Code Online (Sandbox Code Playgroud)

如下:

    const styles = theme => ({
    card: {
    minWidth: 275, backgroundColor: props.color  },
Run Code Online (Sandbox Code Playgroud)

当我尝试最新的那个时,我得到了

 Line 15:  'props' is not defined  no-undef
Run Code Online (Sandbox Code Playgroud)

当我更新代码时:

const styles = theme =>  (props) => ({
    card: {
    minWidth: 275, backgroundColor: props.color  },
Run Code Online (Sandbox Code Playgroud)

 const styles  = (theme ,props) => ({
        card: {
        minWidth: 275, backgroundColor: props.color  },
Run Code Online (Sandbox Code Playgroud)

代替

const styles = theme => ({
    card: {
    minWidth: 275, backgroundColor: props.color …
Run Code Online (Sandbox Code Playgroud)

reactjs material-ui

24
推荐指数
9
解决办法
2万
查看次数

为什么`{} == null`会给出一个SyntaxError?

我可以将{}与true或false或本身进行比较,但是与null或undefined的比较会产生语法错误.这是因为{}是一个对象值而不是一个引用?感觉很奇怪它会是一个语法错误而不是某种运行时类型错误,或者只是工作.

为了澄清,我很好奇为什么这是一个SyntaxError,大多数情况下做的{} == {}不仅仅是SyntaxError,而且根本没有错误.

怪异行为的例子

javascript google-chrome

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

如何将 webpack 开发代理与 Nuxt 一起使用

使用Nuxt开发通用 JS 应用程序,我尝试配置webpack 的开发代理,以便仅在开发中请求/api代理到http://127.0.0.1:500/api到达 Python REST API 的位置。按照 Nuxt 文档,我扩展了 webpack 配置,如下nuxt.config.js所示:

build: {
  extend (config, { isDev }) {
    // Proxy /api to Python only in dev
    if (isDev) {
      const devServer = {
        proxy: {
          '/api': 'http://127.0.0.1:5000'
        }
      }
      config.devServer = devServer;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我记录配置,我会看到正在应用更改:

...
devServer: { proxy: { '/api': 'http://127.0.0.1:5000' } } }
...
Run Code Online (Sandbox Code Playgroud)

然而,当我访问http://127.0.0.1:8080/api/things时,我的 Nuxt 应用程序被返回(它在开发中的端口 8080 上运行),表明 …

webpack nuxt.js nuxt-edge

7
推荐指数
2
解决办法
5912
查看次数

如何有条件地向javascript对象文字添加属性

我正在尝试执行以下操作以满足代码生成器的要求(Sencha Cmd是特定的).

这就是我需要做的事情.关键因素是函数体必须以对象文字的返回结束.由于构建器的限制,我无法返回变量.因此,如果参数'includeB'为true,如何在伪代码点处添加属性'b',但如果为false,则不添加属性AT ALL.即b == undefined或b == null是不允许的.

也许这是不可能的.

function create(includeB) {
        // Can have code here but the final thing MUST be a return of the literal.
        // ...
    return {
        a : 1
        // pseudo code:
        // if (includeB==true) then create a property called b 
        // and assign a value of 2 to it. 
        // Must be done right here within this object literal
    }
}

var obj = create(false);
// obj must have property 'a' ONLY

var …
Run Code Online (Sandbox Code Playgroud)

javascript object

6
推荐指数
2
解决办法
8218
查看次数