将整数转换为对象数组。

时间:2017-05-18 19:47:10

标签: javascript angularjs loops object underscore.js

var items = [
          { "id": 1, "label": "Item1" },
          { "id": 2, "label": "Item2" },
          { "id": 3, "label": "Item3" }
    ];

我有这个名为' items'的对象数组。我从数据库中获取itemselected = 3。

我需要将此3转换为以下形式。

0:Object
  id:3
  label:"Item3"

同样,如果我有一个来自数据库的值2,我应该将其转换为

 0:Object
  id:2
  label:"Item2"

任何人都可以让我提示如何解决它。我不是来这里得到答案的。这些问题对我来说非常棘手,而且我总是无法正确理解逻辑。有关如何掌握此转换的任何建议都将有很大帮助。谢谢。

4 个答案:

答案 0 :(得分:2)

由于您标记了underscore.js,这应该非常简单:

var selectedObject = _.findWhere(items, {id: itemselected});

使用ECMA6,您可以在数组上使用.find方法实现相同的目的:

let selectedObject = items.find(el => el.id === itemselected);

使用ECMA5,您可以使用filter数组方法。如果没有找到任何元素,请注意过滤器返回undefined:

var selectedObject = items.filter(function(el) { return el.id === itemselected});

答案 1 :(得分:0)

根据您的问题标题:« 将整数转换为对象数组 »。您可以使用 JavaScript Array#filter

  

filter()方法创建一个包含所有元素的新数组   通过提供的函数实现的测试。

这样的事情:

var items = [{
    "id": 1,
    "label": "Item1"
  },
  {
    "id": 2,
    "label": "Item2"
  },
  {
    "id": 3,
    "label": "Item3"
  }
];
var value = 2;
var result = items.filter(function(x) {
  return x.id === value;
});
console.log(result); // Prints an Array of object.

Array of object

答案 2 :(得分:0)

使用jquery $ .map函数,如下所示

$.map(item, function( n, i ) { if(n["id"] == 3) return ( n );});

答案 3 :(得分:-1)

试试这个

var obj = {} ; 
items = [
      { "id": 1, "label": "Item1" },
      { "id": 2, "label": "Item2" },
      { "id": 3, "label": "Item3" }
];
items.map(function(n) { obj[n.id] = n });