将键值对存储在javascript

时间:2018-06-19 20:51:05

标签: javascript arrays object keyvaluepair

我有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);

2 个答案:

答案 0 :(得分:1)

其他人已经解释了为什么您的代码不起作用。我正在使用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"
}

答案 1 :(得分:0)

以下不是JavaScript中的有效结构:

  

ticketData = ["assignee":"Tom","shortDesc":"testDesc"];

您需要的是JavaScript object。您能做的最好的事情是:

  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"
}