在 JavaScript 中的数组中存储键值对



我有 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 对象。你能做的最好的事情就是:

  1. 确保两个数组长度相同。
  2. 通过创建新对象来关联键和值。
  3. 使用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"
}

最新更新