【问题标题】:Add dynamic key, value pairs to JavaScript array or hash table将动态键、值对添加到 JavaScript 数组或哈希表
【发布时间】:2012-03-13 00:02:16
【问题描述】:

我正在尝试将键值对添加到现有的 javascript 关联数组。键必须是变量。这是用于 JSON 编码的。我知道有很多插件和框架可以解决这个问题,但我想要一个简单的答案。

ary.push({name: val});

其中ary 是一个新数组,name 是一个包含键的变量,val 是该条目的值。

我在 jQuery 循环中执行此操作,该循环遍历表单字段。

【问题讨论】:

标签: javascript json


【解决方案1】:

“关联数组”实际上只是一个对象。您不使用推送,您只需为对象分配属性:

ary[name] = val;

【讨论】:

  • 我同意应该这样做。我会把所有代码贴出来,希望你能看到错误在哪里
  • 这是最好的答案。非常简单,如果您已经定义了一个哈希值,那么所有这些都是必需的。
【解决方案2】:

在 ES6 中...

在 ES6 中,您可以使用 destructuring assignment;

ary.push({[name]: val});

然而,鉴于这是 ES6 语法,通常的警告适用; this will not work in some browsers(特别是 IE 和 Edge 13)...虽然 Babel 会为您转译。


没有 ES6(旧版浏览器支持)...

您需要定义一个对象并使用方括号表示法来设置属性;

var obj = {};

obj[name] = val;

ary.push(obj);

如果您有阅读更多内容的冲动,请参阅this article,了解方括号和点符号之间的区别。

【讨论】:

  • 这就是答案。谢谢!当我将数组声明为数组时,我正在使用 ary[] 公司“kim corp”电子邮件“eml1”
  • 如果这是您的答案,您应该将其标记为这样,以便获得 Matt 的信任,人们可以很容易地看到哪个答案适合您。
  • 这帮助了我。我在一个数组对象中有多个名称/值对 - 例如在 PHP 中:$test = array(); $test[] = array ("description" => "first", "identifier" => "1");。在 JavaScript 中添加它只是 var obj = {}; obj["description"] = "second"; obj["identifier"] = 2; ary.push(obj); 其中 ary 是分配给 PHP 数组的 JavaScript 变量。
  • 尤其是第一个。 ES6 语法完全符合我的预期。我得到一个带有“动态”键名的普通键值对。所以它在 IE 中不起作用……还有什么新东西。
【解决方案3】:
var ary = [];

function pushToAry(name, val) {
   var obj = {};
   obj[name] = val;
   ary.push(obj);
}

pushToAry("myName", "myVal");

虽然刚刚完全阅读了您的问题,但您只需要以下内容

$(your collection of form els).serializeArray();

好老的 jQuery

【讨论】:

    【解决方案4】:
    const tStyles = [];
    for (const i of iStyles) {
      const temp = {};
      temp[`${style}`] = `../dist/css/uikit.${wFile}.${style}.css`;
      tStyles.push(temp);
    }
    

    json : {"black-beige":"../dist/css/uikit.or.black-beige.css"}

    【讨论】:

      【解决方案5】:

      下面的代码会帮助你

      ary.push( {[name]: val} );
      

      见下例

      let allData = [{name: "Cat", type: "Animal"}]
      let finalData: any = [];
      for (let i = 0; i < allData.length; i++)
      {
        let obj = allData[i];
        for (let KEY in obj)
        {
          //Pushing data to other array as object
          this.finalData.push({ [KEY] : obj[KEY] });
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-21
        • 2014-04-28
        • 2014-02-22
        • 1970-01-01
        • 2011-07-26
        • 2021-04-04
        • 2020-06-30
        • 2017-09-20
        相关资源
        最近更新 更多