如何在JavaScript中以编程方式设置对象属性?
如何使用文本名称和值字典来设置对象的属性?例如 我需要填充此对象:如何在JavaScript中以编程方式设置对象属性?,javascript,Javascript,如何使用文本名称和值字典来设置对象的属性?例如 我需要填充此对象: item = {}; 使用此值集合(请注意,所有内容都是字符串): 因此,原始对象如下所示: item = { a: true, b: false, c: 100, d: 'me@nowhere.com' } 抱歉说得这么含糊,但我不知道从哪里开始。您需要迭代值,使用该数组中每个项的名称属性的值作为键,使用值属性的值作为值: var item = {} values.forEach(func
item = {};
使用此值集合(请注意,所有内容都是字符串):
因此,原始对象如下所示:
item = {
a: true,
b: false,
c: 100,
d: 'me@nowhere.com'
}
抱歉说得这么含糊,但我不知道从哪里开始。您需要迭代
值
,使用该数组中每个项的名称
属性的值作为键,使用值
属性的值作为值:
var item = {}
values.forEach(function(i) {
item[i.name] = i.value
})
可以使用reduce()将数组(in)缩减为单个对象
values.reduce(function(a, b){
a[b.name] = b.value;
return a ;
}, item)
堆栈片段
var值=[
{id:1,名称:“a”,值:“true”},
{id:2,名称:“b”,值:“false”},
{id:3,名称:“c”,值:“100”},
{id:4,名称:“d”,值:me@nowhere.com" }
];
var item={};
log(values.reduce(函数(a,b){a[b.name]=b.value;返回a},item))代码>
正文{
字体系列:verdana;
字体大小:10px;
}
var so={
日志:函数(e){
document.getElementById(“a”).innerText=JSON.stringify(e,null,”);
}
}
在ES6中:
Object.assign({}, ...values.map(value => ({[value.name]: value.value})))
这将使用ES6的计算属性名创建一个小对象数组,每个小对象有一个键值对,然后使用扩展运算符(…
)将它们传递给对象。将
指定为要合并的参数
要转换值,如将“true”
转换为true
,请将value.value
更改为transform(value.value)
,并编写transform
函数:
function transform(value) {
return value === "true" ? true :
value === "false" ? false :
!isNaN(value) ? +value :
value;
}
有趣。但是这不会使所有的值都变成字符串吗?是的。所有的值都是字符串。如果您想将它们转换为其他类型,您需要对值进行一些检查。这有点关键。注意这个例子。属性“a”和“b”是布尔值。属性“c”是一个数字。属性“d”是字符串。“false”似乎仍然是字符串?字符串总是返回true,对吗?哦,是的。很抱歉我注意到了@不用客气,谢谢!我总是忘记布尔值(“假”)!==False我想我在编辑过程中不小心在另一个窗口上单击了“刷新”或其他内容。现在应该可以了@没关系-谢谢你的链接。这是一种有趣的方式:-)
function transform(value) {
return value === "true" ? true :
value === "false" ? false :
!isNaN(value) ? +value :
value;
}