angular2创建一个关联数组

时间:2017-02-06 18:59:58

标签: arrays angular typescript

我想在angular2中创建一个关联数组,但还没找到方法

这就是我试过的

  onSubmit(){

let inputfield:any[]  = [];

for(var i=0; i<this.inspectionform.value["inputfileds"].length; i++){

 if(this.inspectionform.value["inputfileds"][i]["input"] != ""){
    //here i need help
    inputfield.push( i : this.inspectionform.value["inputfileds"][i]["input"]) //this returns a syntax error
  }

}

} 所以我真正期待的是将一个键和值传递给数组

这样的东西
1:sdbhd//pass this to the array

在for循环中我尝试了

//inside the for loop

     let arrayval = [];
    arrayval.push(this.inspectionform.value["inputfileds"][i]["input"])
    arrayval.push(i)

    inputfield.push(arrayval);

每次具有这种性质时都会创建一个新对象

0:njnf
1:1(value of i)

2 个答案:

答案 0 :(得分:1)

Javascript没有关联数组,只需使用{}或新的Map api

let xxxMap = new Map();

xxxMap.set('key1', 'value 1');

xxxMap.set('key2', 5);

console.log(xxxMap.get('key1'));

从那里了解更多信息:Map in Javascript

答案 1 :(得分:1)

你可以使用Map,但我选择使用普通对象;

<强>演示

const mything = {}
mything.foo = 1
mything.foo === mything['foo'] // true
mything['bar'] = 1337;
mything.bar === 1337 // true
mything.foo-bar = 1 // ERROR: can't have dashes
mything['foo-bar'] = 1 // Works

在ES6或任何相对现代的浏览器中,您可以使用Object.keys(mything)获取所有密钥。对于较旧的环境,您必须使用for ... in循环键,如此polyfill中所示:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

您必须注意的另一件事是在您的属性链中定义上一个项目。例如,如果你有

var foobar = {
  foo: { bar: 1 }
}

然后您 CAN 执行foobar.foo.bar.toString()获取"1",但如果您尝试执行foobar.foo.bang.toString(),则会出现错误原因bang未在foo对象上定义。

您可以通过执行foobar.foo.bang && foobar.foo.bang.toString()之类的保护检查来解决此问题,如果存在bang,则仅运行toString方法。

更简单的方法是使用lodash,它会为您提供_.get_.set,分别负责保护和创建缺少的属性。< / p>