相关疑难解决方法(0)

我可以获得以数字开头的javascript对象属性名称吗?

var myObj = {"suppliers":[{"name":"supplier1","12m":"0.08","24m":"0.06"}]};

alert(myObj.suppliers[0].12m);
Run Code Online (Sandbox Code Playgroud)

是否有不同的方法来获取此属性,或者我应该不使用以数字开头的键?

javascript key

13
推荐指数
1
解决办法
2万
查看次数

javascript中点符号和括号表示法之间的区别

我试图理解.Notation[]符号之间的区别.在我下面的问题中,当我使用时,if (object[key] === true)我得到了正确的答案.当我使用if (object.key === true)它不起作用.有人可以解释为什么它不同.

var myObj = {
    one: false,
    two: false,
    three: false,
    four: true,
    five: false,
    six: false
};
var myFunc = function (object) {
    for (var key in object) {
        if (object[key] === true) {
            return "There is a true value in this object";
        } else {

        }
    }
    return "Sorry, there are no true values in this object";
};
Run Code Online (Sandbox Code Playgroud)

javascript syntax brackets

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

使用括号表示法访问嵌套属性

说我有 var input = {'name':'john'}

我愿意 input['name'] = 'James'

它变成了var input = {'name':'john'}但我可以用点传递值来访问嵌套属性吗?

喜欢

var input = {"name":"john","grades":"{english:"A","math":"C"}"}

我无法通过执行input["grades.math"].

javascript ecmascript-6

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

ajax中的可变数据调用JQUERY

我试图在jquery中使用AJAX调用中的变量,但它不起作用.move变量包含不同的值.请检查以下代码:

var $move = 'next';

$.ajax({
   type: "POST",
   url: "somephp.php",
   data: {$move:1},
});
Run Code Online (Sandbox Code Playgroud)

建议在数据中使用$ move变量的任何方法.

ajax jquery

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

比较两个对象,看是否相等

目前我正在关注一本书并且非常困惑,并且多次尝试了解以下代码.我的第一个困惑实际上是接近比较两个对象ab的问题.

 function deepEqual(a, b) {
  if (a === b) return true;

  if (a == null || typeof a != "object" ||
      b == null || typeof b != "object")
    return false;

  var propsInA = 0, propsInB = 0;

  for (var prop in a)
    propsInA += 1;

  for (var prop in b) {
    propsInB += 1;
    if (!(prop in a) || !deepEqual(a[prop], b[prop]))
      return false;
  }

  return propsInA == propsInB;
}

var obj = {here: {is: "an"}, …
Run Code Online (Sandbox Code Playgroud)

javascript

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

属性'controls'在类型'AbstractControl'上不存在 - angular4

已经发布了许多针对此错误的博客,但没有为angular4指定任何博客.

我在表单上添加和删除动态控件

在初始化期间向窗体添加控件

ngOnInit() {

    this.lienHolder = this._fb.group({
      emailAddress: ['', [Validators.required, Validators.email]],
      policyDetails: this._fb.array([
        this.initPolicyTemplate(),
      ])
    });

  }

 initPolicyTemplate() {
    return this._fb.group({
      policyNumber: ['', [Validators.required, Validators.pattern("(^[^0][A-Z]{1}[0-9]*$)")]],
      vinNumber: ['', [Validators.required, Validators.pattern('^[0-9]{6}$')]],
    });
  }
Run Code Online (Sandbox Code Playgroud)

通过调用此方法添加更多控件

 addPolicyTemplate() {
    const control = <FormArray>this.lienHolder.controls['policyDetails'];
    control.push(this.initPolicyTemplate());
  }
Run Code Online (Sandbox Code Playgroud)

从表单中删除控件

  removePolicyTemplate(i: number) {  
    const control = <FormArray>this.lienHolder.controls['policyDetails'];
    control.removeAt(i);
  }
Run Code Online (Sandbox Code Playgroud)

但是当我构建代码时,我得到这样的错误

在此输入图像描述

这是我的HTML

  <div formArrayName="policyDetails">
        <div *ngFor="let _policy of lienHolder.controls.policyDetails.controls; let i=index">
          <div class="panel panel-default">
            <div class="panel-head">
              <div class="glyphicon glyphicon-remove pull-right" *ngIf="lienHolder.controls.policyDetails.controls.length > 1" (click)="removePolicyTemplate(i)"></div>
            </div>
            <div class="panel-body">
              <div [formGroupName]="i"> …
Run Code Online (Sandbox Code Playgroud)

angular angular4-forms

8
推荐指数
2
解决办法
1万
查看次数

使用非 ASCII 字符作为 JavaScript 对象键

我有以下对象:

var obj = {
  '?' : 'testing',
  '?' : '2015-5-15',
  '?' : 123,
  '?' : 'Good'
};
Run Code Online (Sandbox Code Playgroud)

如何通过其非 ASCII 键(在本例中为日语字符)访问值?

不能使用obj.?obj.'?'肯定,这会导致 JavaScript 解析错误。

javascript object

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

获取数组中的第一个和最后一个项目 - JS

我试图获取数组中的第一个和最后一个项目并将它们显示在一个对象中.

我做的是我使用第一个和最后一个函数,然后将第一个项目作为键,将最后一个项目作为值.

var myArray = ['Rodel', 'Mike', 'Ronnie', 'Betus'];

function firstAndLast(array) {

var firstItem = myArray.first;
var lastItem = myArray.last;

 var objOutput = {
   firstItem : lastItem 
  };

}

var display = transformFirstAndLast(myArray);

console.log(display);
Run Code Online (Sandbox Code Playgroud)

然而这个让我陷入困境.它说未定义.知道为什么会这样吗?

javascript arrays

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

在JavaScript中隐式添加构造函数原型的方法

以下是Crockford的JavaScript:The Good Parts的代码片段:

Function.prototype.method = function (name, func) {
  this.prototype[name] = func;
  return this;
};
Run Code Online (Sandbox Code Playgroud)

克罗克福德继续解释

"通过使用方法方法扩充Function.prototype,我们不再需要输入原型属性的名称.现在可以隐藏这一点丑陋."

我基本上不知道这一点.在我们现在不再需要做什么之前我们必须做什么?

javascript

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

设置验证的默认值

我正在使用Joi来验证我的node.js服务器中使用hapijs框架的服务的有效负载.它曾经看起来像这样(在我的打字稿代码以及编译成javascript后):

payload: {
    para1: Joi.number().required(),
    para2: Joi.string()
}
Run Code Online (Sandbox Code Playgroud)

现在我想设置两个参数的默认值.如果代码是用javascript编写的,我可以这样做:

payload: {
    para1: Joi.number().required().default(1),
    para2: Joi.string().default("defaultstring")
}
Run Code Online (Sandbox Code Playgroud)

我在swagger中测试了它,默认值实际上变成了我设置的值.

但是,我的项目是用打字稿编写的.我做了同样的事情并编译​​了打字稿代码.结果javascript看起来像这样:

 payload: {
    para1: Joi.number().required()["default"](1),
    para2: Joi.string()["default"]("defaultstring")
 }
Run Code Online (Sandbox Code Playgroud)

在招摇时,不应用默认值.

这是我的问题:

  1. 为什么代码在编译后会变得不同?
  2. 什么["default"]("defaultstring")意思,它做什么?
  3. 如何编写打字稿代码以确保它可以编译为 Joi.string().default("defaultstring")

更新

根据@ rsp的帖子,问题2中的格式只是访问对象属性的不同方式.我也可以从这里得到参考.但它没有解释它们是否有任何区别.有谁有想法吗?

UPDATE2

以下是访问JS属性的两种方式之间的区别.使用括号方式似乎没有负面影响.但是,在我的情况下,默认值不会反映在swagger上.将对它进行研究.

javascript node.js typescript hapijs joi

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