我得到的数据是一系列对象,例如:
[
{
id: 0,
config: false
},
{
id: 1,
config: false
},
{
id: 2,
config: false
},
{
id: 3,
config: false
}
]
我想采用这个对象并使用某种算法来配置新对象,如
[
{
id: 0,
config: false
},
{
id: 1,
config: true
},
{
id: 2,
config: false
},
{
id: 3,
config: false
}
]
[
{
id: 0,
config: false
},
{
id: 1,
config: false
},
{
id: 2,
config: true
},
{
id: 3,
config: false
}
]
等等......我只需要一个配置为真,其他所有配置都应该是假的。任何帮助将不胜感激我一直在撕裂我的头发。 ES6也是一种选择。
谢谢
答案 0 :(得分:1)
你可以为它generator function。
function* getParts(array) {
var i = 1 << array.length;
while (i--) {
yield array.map((o, j) => Object.assign({}, o, { config: !(i & 1 << j) }));
}
}
var array = [{ id: 0, config: false }, { id: 1, config: false }, { id: 2, config: false }, { id: 3, config: false }];
console.log([...getParts(array)]);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
答案 1 :(得分:0)
var object = [];
for (var i = 0; i < 10; i ++) {
object [i] = {
"id": i,
"config": false
};
}
// Algorithm
for (var i = 0; i < object.length; i ++) {
var clone = makeClone (object);
clone [i].config = true;
console.log (clone);
}
function makeClone (object) {
var tmp = [];
for (var i = 0; i < object.length; i ++) {
tmp [i] = {};
var objectKeys = Object.keys (object [i]);
for (var j = 0; j < objectKeys.length; j ++) {
var key = objectKeys [j];
tmp [i][key] = object [i][key];
}
}
return tmp;
}
&#13;
答案 2 :(得分:0)
这很容易。假设你需要更改配置字段,id = 1.试试这个:
const arr = [
{
id: 0,
config: false
},
...
];
const newArr = arr.map(item => {
if (item.id === 1) {
item.config = true;
}
return item;
});
<强>更新强> 看看我的jsfiddle示例:https://jsfiddle.net/smhfanda/jwamLq01/