[英]Map array to array of objects
我有一个带有选定项目的变化数组,其中键为id:
[1, 2, 4, 6]
和对象数组:
items = [
{
id: 1,
selected: false
},
{
id: 2,
selected: false
},
{
id: 3,
selected: false
},
{
id: 4,
selected: false
},
{
id: 5,
selected: true
},
{
id: 6,
selected: false
}
]
如何将所选数组映射到项目并将“ selected”更改为true,其他项目则将其更改为false?
items.forEach(item => item.selected = array.contains(item.id))
只需遍历所有项目,并根据ID是否包含在数组中来设置所选属性。
var items = [
{
id: 1,
selected: false
},
{
id: 2,
selected: false
},
{
id: 3,
selected: false
},
{
id: 4,
selected: false
},
{
id: 5,
selected: true
},
{
id: 6,
selected: false
}
];
var array = [1, 2, 4, 6];
items.forEach(function(item) {
item.selected = (array.indexOf(item.id) !== -1);
})
您可以使用Map
并对数组进行迭代,并将其全部设置为false
,然后将其选定为true
。
var selected = [1, 2, 4, 6], items = [{ id: 1, selected: false }, { id: 2, selected: false }, { id: 3, selected: false }, { id: 4, selected: false }, { id: 5, selected: true }, { id: 6, selected: false }], map = new Map; items.forEach(a => (map.set(a.id, a), a.selected = false)); selected.forEach(a => map.get(a).selected = true); console.log(items);
.as-console-wrapper { max-height: 100% !important; top: 0; }
具有Set
的版本。
var selected = [1, 2, 4, 6], items = [{ id: 1, selected: false }, { id: 2, selected: false }, { id: 3, selected: false }, { id: 4, selected: false }, { id: 5, selected: true }, { id: 6, selected: false }], set = new Set(selected); items.forEach(a => a.selected = set.has(a.id)); console.log(items);
.as-console-wrapper { max-height: 100% !important; top: 0; }
var arr = [1,2,4,6];
var items = [
{
id: 1,
selected: false
},
{
id: 2,
selected: false
},
{
id: 3,
selected: false
},
{
id: 4,
selected: false
},
{
id: 5,
selected: true
},
{
id: 6,
selected: false
}
];
var notSelected = $.grep(items, function(e) { return arr.indexOf(e.id) == -1 }).map(function(e) { e.selected = false; return e;});
var selected = $.grep(items, function(e) { return arr.indexOf(e.id) != -1 }).map(function(e) { e.selected = true; return e;});
结果:
notSelected.concat(selected);
请尝试一下。 我认为它将起作用...
$new=array();
foreach($items as $item){
if($item['selected']==false){
$new.=array_merge($item['id']);
}
}
print_r($new);
并更改未选中的项目为true。
foreach($items as $item){
if($item['selected']==false){
$item['selected']=true;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.