【问题标题】:storing key value pairs in an array in javascript在javascript中将键值对存储在数组中
【发布时间】:2018-06-20 05:07:16
【问题描述】:

我有两个数组,

configdata = ["assignee", "shortDesc"];
ticketarray = ["Tom","testDesc"];

我想将值作为键值对存储在另一个数组中,如下所示:

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

请注意,数组值是动态的,所以我不能对它们进行硬编码。 有没有办法这样做?我能够达到上述要求,但长度始终显示为 0。这是我正在使用的代码:

configdata.Incident_Field.forEach(function (k, i) {
   this[k] = ticketarray[i];
}, ticketData);

【问题讨论】:

  • 使用对象! :-)
  • 你不能有这样的 array。 (星号,脚注,嗯,你可以,但不是你想的那样。)你想要的是一个 object ({assignee: 'Tom', ...})。
  • @deceze 我不知道,这是什么?编辑:cf 好吧,你可以,但这不是你想的那样。
  • @Ivan 数组也是对象,您可以为它们分配任意属性...

标签: javascript arrays object keyvaluepair


【解决方案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"
}

【讨论】:

    【解决方案2】:

    以下不是 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"
    }
    

    【讨论】:

    • 我不确定这个问题需要答案,因为它是基本的 JavaScript
    • @Ivan 啊,你为什么这么认为?可能是用户像我一样非常新。
    • 是的,所以这里不需要答案。
    • @Ivan 您还在评论中表示您不确定什么是正确的对象,您也可以考虑回答您的问题。所以这就像用一块石头击中两只鸟...... :)
    • 我知道 JavaScript 对象是什么。我认为你误解了 deceze 所说的:“你不能有这样的数组。(星号,脚注,嗯,你可以,但这不是你想的那样。)”。他指的不是物体,而是我不知道的其他东西。
    猜你喜欢
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    相关资源
    最近更新 更多