如何在对象数组中混洗数组?

时间:2015-04-06 01:55:25

标签: javascript lodash

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

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

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

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

但是,此代码不适用于链接,将colors转换为对象,并且需要一个我认为可以消除的匿名函数。有没有办法让这段代码更简单?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:-2)

以下是使用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>';
&#13;
<script src="https://rawgit.com/fordth/jinqJs/master/jinqjs.js"></script>
&#13;
&#13;
&#13;