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