我有 2 个数组,即,
configdata = ["assignee", "shortDesc"];
ticketarray = ["Tom","testDesc"];
我想将这些值作为键值对存储在另一个数组中,如下所示:
ticketData = ["assignee":"Tom","shortDesc":"testDesc"];
请注意,数组值是动态的,因此我无法对它们进行硬编码。 有没有办法这样做?我能够达到上述要求,但长度始终显示为 0。这是我正在使用的代码:
configdata.Incident_Field.forEach(function (k, i) {
this[k] = ticketarray[i];
}, ticketData);
其他人已经解释了为什么你的代码不起作用。我正在使用reduce
提供另一种解决方案。
const configdata = ["assignee", "shortDesc"];
const ticketarray = ["Tom", "testDesc"];
let ticketData = configdata.reduce((result, value, index) => {
result[value] = ticketarray[index];
return result;
}, {});
console.log(ticketData);
输出:
{
assignee: "Tom",
shortDesc: "testDesc"
}
以下不是 JavaScript 中的有效结构:
ticketData = ["assignee":"Tom","shortDesc":"testDesc"];
你需要的是一个 JavaScript 对象。你能做的最好的事情就是:
- 确保两个数组长度相同。
- 通过创建新对象来关联键和值。
- 使用
Object.keys(obj).length
确定长度。
从以下代码开始:
configdata = ["assignee", "shortDesc"];
ticketarray = ["Tom", "testDesc"];
if (configdata.length == ticketarray.length) {
var obj = {};
for (var i = 0; i < configdata.length; i++)
obj[configdata[i]] = ticketarray[i];
}
console.log("Final Object");
console.log(obj);
console.log("Object's Length: " + Object.keys(obj).length);
上面会给你一个你喜欢的对象,一个包含所有值的变量:
{
"assignee": "Tom",
"shortDesc": "testDesc"
}