Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据下划线js中的键和值对进行分组_Javascript_Underscore.js - Fatal编程技术网

Javascript 如何根据下划线js中的键和值对进行分组

Javascript 如何根据下划线js中的键和值对进行分组,javascript,underscore.js,Javascript,Underscore.js,我试图弄清楚如何使用下划线js对这个数组进行分组。请帮我解决这个问题 var result = [ { phone_number: '777', type: 'ORDER_SMS' }, { phone_number: '777', type: 'ORDER_CALL' }, { phone_number: '999', type: 'ORDER_SMS' } ]; //expected output var result = [ {'ORDER_SMS'

我试图弄清楚如何使用下划线js对这个数组进行分组。请帮我解决这个问题

var result = [
    { phone_number: '777', type: 'ORDER_SMS' }, 
    { phone_number: '777', type: 'ORDER_CALL' },
    { phone_number: '999', type: 'ORDER_SMS' } 
];

//expected output
var result = [
    {'ORDER_SMS' : '777, 999'}, 
    {'ORDER_CALL': '777' }
];

你可以用很多方法来做,这只是其中之一

var grouped = _.groupBy(result, function(obj) {
    return obj.type;
});
result = _.keys(grouped).map(function(key) {
    var newObj = {};
    newObj[key] = _.pluck(grouped[key], 'phone_number').join(' ');
    return newObj
});

1.使用下划线

var list = [{
    phone_number: '777',
    type: 'ORDER_SMS'
}, {
    phone_number: '777',
    type: 'ORDER_CALL'
}, {
    phone_number: '999',
    type: 'ORDER_SMS'
}];
var result = _.chain(list)
    .groupBy('type')
    .map(function(value, key) {
        // console.log(value)
        return {
            type: key,
            phone_numbers: _.pluck(value, 'phone_number')
        }
    })
    .value();

console.log('result', result)
2.使用纯JS
var origArr=[{
电话号码:“777”,
键入:“订单\短信”
}, {
电话号码:“777”,
键入:“订单电话”
}, {
电话号码:“999”,
键入:“订单\短信”
}];
功能分组依据(arr,键){
var newArr=[],
类型={},
新项目,i,j,cur;
对于(i=0,j=arr.length;ilog(groupBy(origArr,'type')查看使用groupBy,然后映射组以提取电话号码。