【问题标题】:jquery map an object with key and valuejquery 用键和值映射一个对象
【发布时间】:2015-07-08 09:04:47
【问题描述】:

我正在尝试将 json 对象映射到具有与键关联的值的数组。我需要保持关联的键和值,因为之后我将对创建的数组进行排序。 我的对象看起来像这样:

{"178":"05HY24","179":"1HY12","292":"1HY24","180":"3HY12"}

我尝试用这个函数做数组:

value=$.map(value, function(value, key) { return key,value; });

但键与我的值无关。键是 0,1,2,3 而不是 178,179,292,180。 我尝试了很多东西,但我不知道该怎么做。

【问题讨论】:

  • 因为array 索引从零开始
  • 你基本上是在追求一组对象吗?例如[{178:"05HY24"}、{179:"1H&12"} 等] ?
  • 我的数据不在数组中。我只有一个对象,其键与值关联
  • 好的,但是之后如何根据值对我的新数组进行排序?我不能使用排序功能?

标签: jquery arrays object


【解决方案1】:
var myHashMap = JSON.parse('{"178":"05HY24","179":"1HY12","292":"1HY24","180":"3HY12"}');
console.log(myHashMap[178]);
// => "05HY24"

// now map to array..
var myArray = $.map(myHashMap, function(value, index) {
   return [value];
});

console.log(myArray);

【讨论】:

  • 它仍然给了我一个对象。我想要一个数组在之后做数组操作
  • 最后,如果我执行 console.log(myArray[292]) 结果是未定义的,而不是 1HY24。钥匙丢了
  • @Etienne 那是因为它是一个数组,而不是一个对象——就像你想要的那样。编辑:我不确定你是否完全知道你真正想要/需要什么 - 但如果你想对对象进行排序,请查看这个答案:stackoverflow.com/a/16794116/1173155
  • 好的,所以我不能将键关联到 javascript 数组中的值。我只能有从 0 开始的键。
【解决方案2】:

不用jQuery也可以做到:

var values = {
  "178": "05HY24",
  "179": "1HY12",
  "292": "1HY24",
  "180": "3HY12"
};
var array = [];
for (var k in values)
  array.push({
    'k': k,
    'v': values[k]
  });
array.sort(function(a, b) {
  return a.k - b.k;
});
console.log(array);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 2017-02-08
    • 2018-11-19
    • 2023-02-05
    • 1970-01-01
    • 2012-06-03
    相关资源
    最近更新 更多