如何在对象数组中打乱数组?
How to shuffle arrays in array of objects?
我有一组与此类似的对象:
[
{
name: 'Apple',
colors: ['red', 'green', 'yellow']
},
{
name: 'Orange',
colors: ['orange']
}
]
我想打乱每个对象的颜色。我目前正在使用以下代码:
_.each(fruits, function (elem) {
elem.colors = _.shuffle(elem.colors);
});
但是,此代码不适用于链接,将 colors
变成一个对象,并且需要一个我认为可以消除的匿名函数。有没有办法让这段代码更简单?
下面是使用 jinqJs 随机随机排列颜色 属性 数组的方法。
var data = [
{
name: 'Apple',
colors: ['red', 'green', 'yellow']
},
{
name: 'Orange',
colors: ['orange']
}
];
var result = jinqJs().from(data).select(function(row){
row.colors = row.colors.sort(function() {return .5 - Math.random();});
return row;
});
document.body.innerHTML += '<pre>' + JSON.stringify(result, null, 2) + '</pre><br><br>';
<script src="https://rawgit.com/fordth/jinqJs/master/jinqjs.js"></script>
这就是使用 lodash 以可链接的方式实现它的方式:
var r = _(a)
.map(function(i) {
return _.assign(i, { colors: _.shuffle(i.colors) });
})
.value();
JSFiddle:http://jsfiddle.net/bo8xf2as/
我有一组与此类似的对象:
[
{
name: 'Apple',
colors: ['red', 'green', 'yellow']
},
{
name: 'Orange',
colors: ['orange']
}
]
我想打乱每个对象的颜色。我目前正在使用以下代码:
_.each(fruits, function (elem) {
elem.colors = _.shuffle(elem.colors);
});
但是,此代码不适用于链接,将 colors
变成一个对象,并且需要一个我认为可以消除的匿名函数。有没有办法让这段代码更简单?
下面是使用 jinqJs 随机随机排列颜色 属性 数组的方法。
var data = [
{
name: 'Apple',
colors: ['red', 'green', 'yellow']
},
{
name: 'Orange',
colors: ['orange']
}
];
var result = jinqJs().from(data).select(function(row){
row.colors = row.colors.sort(function() {return .5 - Math.random();});
return row;
});
document.body.innerHTML += '<pre>' + JSON.stringify(result, null, 2) + '</pre><br><br>';
<script src="https://rawgit.com/fordth/jinqJs/master/jinqjs.js"></script>
这就是使用 lodash 以可链接的方式实现它的方式:
var r = _(a)
.map(function(i) {
return _.assign(i, { colors: _.shuffle(i.colors) });
})
.value();
JSFiddle:http://jsfiddle.net/bo8xf2as/