【问题标题】:Convert an array to an "array of associative arrays" in jQuery在 jQuery 中将数组转换为“关联数组的数组”
【发布时间】:2016-04-14 19:46:32
【问题描述】:

我正在尝试在 jQuery 中做另一件愚蠢的事情...

我在一个数组中有一堆字符串:

[ var1 , var2 , var3 , var4 , var5 , var6 , var7 , ...]

并且我希望数组成为“关联数组的数组”,每次都具有相同的索引...(不要问我为什么 xD):

[ { 'variable' : var1 } , { 'variable' : var2 } , { 'variable' : var3 } , ... ]

索引“变量”每次都相同。

如何做到这一点?我的尝试(如下)不起作用......

var stringarray = ['var1', 'var2', 'var3', 'var4'];
var assarray = {};

$.each(stringarray, function(index, value) {

  assarray[index] = {
    'variable': value
  };

});
document.write(JSON.stringify(assarray))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

【问题讨论】:

  • 什么不起作用?它似乎工作正常。为什么assarray 使用对象 ({}) 而不是数组 ([])?不用 jQuery 你也可以做同样的事情:stringarray.map(function(a){return {"variable": a};}).
  • 非 jQuery ES6:var out = arr.map(el => ({ variable: el }))...
  • 但是,是的,var assarray= {} 必须是 var assarray= [],如下所示。
  • 只需将assarray={} 更改为assarray=[] 即可实现您的愿望
  • 是的,那是我的错误。有太多事情出错了,我有点绝望。我首先有assarray=[];,但当时可能还有其他混淆......谢谢大家。

标签: javascript jquery arrays associative-array


【解决方案1】:

基本上是因为 assarray 不是数组。它必须是:

var assarray = [];

你也可以这样做:

var assarray = $.map(stringarray, function(val){ return {variable:val};});

【讨论】:

  • 谢谢!设法让它工作。然而事实证明,我试图解析的数组有超过 100.000 个条目,这只是给了我一个 BSOD,哈哈!我想我必须找到另一个解决方案...... :-P
【解决方案2】:

是的,一定要使用map。但我只是使用自 ES5 以来的内置:

var assarray = stringarray.map(function(element){ 
   return { variable: element };
});

查看docs here。应该可以在 IE9 之后的所有浏览器上运行。

【讨论】:

  • 好吧,他已经有 jQuery,所以除非他已经知道 IE8 和更低版本的浏览器,否则使用 jQuery 的工作量会减少。
  • 这里不一定不同意你的观点,但我觉得非jquery版本通常更优雅,应该尽可能使用:)
猜你喜欢
  • 1970-01-01
  • 2012-05-16
  • 2019-01-06
  • 2011-07-11
  • 1970-01-01
  • 2017-01-10
  • 2011-05-08
  • 2020-04-23
相关资源
最近更新 更多