我想根据另一个对象的键形成一个对象并将值设置为空字符串;
const availableList = [
{id: 1, key: 'emp_id'},
{id: 2, key: 'firstname'},
{id: 3, key: 'lastname'},
{id: 4, key: 'mobile'},
{id: 5, key: 'email'},
]
availableList .forEach(key => result [key] = availableList [key]);
预期输出:
result = {
emp_id: '',
firstname: '',
lastname: '',
mobile: '',
email: ''
}
答案 0 :(得分:3)
您可以将 .reduce
与对象析构和对象的计算属性一起使用
const availableList = [
{ id: 1, key: "emp_id" },
{ id: 2, key: "firstname" },
{ id: 3, key: "lastname" },
{ id: 4, key: "mobile" },
{ id: 5, key: "email" },
]
const res = availableList.reduce(
(finalObj, iteratedObj) => ({ ...finalObj, [iteratedObj.key]: "" }),
{}
)
console.log(res)
参考资料
答案 1 :(得分:2)
如果您不太熟悉 javascript、数组和对象,最好保持简单(避免箭头函数和花哨的 es6 符号)。
一个简单的 Array#reduce
应该可以解决问题:
const availableList = [
{id: 1, key: 'emp_id'},
{id: 2, key: 'firstname'},
{id: 3, key: 'lastname'},
{id: 4, key: 'mobile'},
{id: 5, key: 'email'},
];
var newObject = availableList.reduce(function (result, item) {
result[item.key] = '';
return result;
}, {});
console.log(newObject);
如果您熟悉 Array#reduce
的一些评论:
result
的参数是用于将数组“缩减”为单个变量的值。item
的参数是每次迭代期间数组项的值。result
的原始值是指定为 reduce
的第二个参数的值(在本例中为 {}
)reduce
的函数内部,您必须返回将在下一次迭代中作为 result
参数传入的值newObject
答案 2 :(得分:1)
您有一组属性。因此,正如您在问题中所建议的,您需要使用 forEach 来迭代所有项目。在这种情况下,项目是对象。因此,您只需编写 obj.property 即可访问它们的所有属性。
让我们看看如何向对象添加属性。 我可以这样做:
obj.property5 = 'something'
或者我可以这样做:
obj['property5'] = 'something'
由于您有一些不可预测的属性名称,因此您应该使用第二个名称。 代码如下:
var secondObject = {};
availableList.forEach(function(item, index) {
secondObject[item.key] = '';
});
答案 3 :(得分:1)
这是我对 Object.fromEntries()
的看法:
const availableList = [
{ id: 1, key: "emp_id" },
{ id: 2, key: "firstname" },
{ id: 3, key: "lastname" },
{ id: 4, key: "mobile" },
{ id: 5, key: "email" },
];
const result = Object.fromEntries(availableList.map((item) => [item.key, ""]))
console.log(result);