将键盘对添加到typescript中的对象数组中

时间:2017-03-14 05:21:17

标签: javascript typescript

我有这个对象数组,我在打字稿中为对象添加更多密钥对时遇到了问题。

例如,我有这个数组。

 accountsOptions:any = [
                          {'data': 
                                    {
                                      'adidas': null, 
                                      'google': null
                                    }
                          }
                        ];

我想在这里添加更多

 accountsOptions:any = [
                              {'data': 
                                        {
                                          'adidas': null, 
                                          'google': null,
                                          'nike': null,
                                          'apple': null
                                        }
                              }
                            ];

新值来自另一个数组,如何循环(有效)并动态添加更多密钥对?我是打字稿的新手。

3 个答案:

答案 0 :(得分:3)

您可以使用数组方法并检查对象是否包含属性,如果它不包含将属性添加到对象中。

检查以下代码段

"use strict";
var accountsOptions = [
    { 'data': {
            'adidas': null,
            'google': null
        }
    }
];
function addProperty(propertyName) {
    accountsOptions.map(function (account) {
        if (!account.data.hasOwnProperty(propertyName)) {
            account.data[propertyName] = null;
        }
    });
}
addProperty('nike');
console.log(accountsOptions)

希望有所帮助

答案 1 :(得分:0)

您获得对data对象的引用:

var data:any = accountsOptions[0].data;

...然后循环遍历您的数组,例如使用无聊的旧for循环(但您有批次选项;请参阅this question's answers以了解他们是什么):

for (var i:number = 0; i < yourArray.length; ++i) {
    // ...
}

...并在循环中,使用括号表示法(请参阅this question's answers)向data对象添加属性:

data[yourArray[i]] = null;

E.g:

var data:any = accountsOptions[0].data;
for (var i:number = 0; i < yourArray.length; ++i) {
    data[yourArray[i]] = null;
}

但同样,你有几个循环选项。这是另一个:

var data:any = accountsOptions[0].data;
yourArray.forEach((entry:string) => {
    data[entry] = null;
});

答案 2 :(得分:-1)

尝试accountsOptions[0].data.nike = null

显然,您可以使用accountsOptions循环遍历for

你可以从这些SO中获得更多的想法: Add a Key Value Pair to an array of objects in javascript?How can I add a key/value pair to a JavaScript object?