如何在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;
}