我有这个对象数组,我在打字稿中为对象添加更多密钥对时遇到了问题。
例如,我有这个数组。
accountsOptions:any = [
{'data':
{
'adidas': null,
'google': null
}
}
];
我想在这里添加更多
accountsOptions:any = [
{'data':
{
'adidas': null,
'google': null,
'nike': null,
'apple': null
}
}
];
新值来自另一个数组,如何循环(有效)并动态添加更多密钥对?我是打字稿的新手。
答案 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?