如何在对象数组中打乱数组

How to shuffle arrays in array of objects?

本文关键字:数组 对象      更新时间:2023-09-26

我有一个类似的对象数组:

[
  {
    name: 'Apple',
    colors: ['red', 'green', 'yellow']
  },
  {
    name: 'Orange',
    colors: ['orange']
  }
]

我想打乱每个物体的颜色。我目前正在使用以下代码:

_.each(fruits, function (elem) {
  elem.colors = _.shuffle(elem.colors);
});

然而,这段代码不适用于链接,将colors变成了一个对象,并且需要一个匿名函数,我认为这个函数可以被消除。有什么方法可以让这个代码更简单吗?

这就是用lodash:以可链接的方式实现它的方法

var r = _(a)
    .map(function(i) {
        return _.assign(i, { colors: _.shuffle(i.colors) });
    })
    .value();

JSFiddle:http://jsfiddle.net/bo8xf2as/

以下是如何简单地使用jinqJs随机打乱colors属性数组。

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>