Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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 按对象值排列的数组位置_Javascript_Arrays_Node.js_Sorting_Object - Fatal编程技术网

Javascript 按对象值排列的数组位置

Javascript 按对象值排列的数组位置,javascript,arrays,node.js,sorting,object,Javascript,Arrays,Node.js,Sorting,Object,我想创建一个函数,该函数根据特定键的值对数组进行排序 我将举个例子 [{text:'hi',author:'Boy'}, {文本:'你好吗',作者:'男孩'}, {文本:'我很好',作者:'男孩'}, {文本:'你好',作者:'女孩'}, {文本:'再见',作者:'男孩'}] 在上面的数组中,“Girl”author大于“Boy”author,因此它应该返回以下数组 [{text:'hello',author:'Girl'}, {文本:'hi',作者:'Boy'}, {文本:'你好吗',作者:

我想创建一个函数,该函数根据特定键的值对数组进行排序

我将举个例子

[{text:'hi',author:'Boy'},
{文本:'你好吗',作者:'男孩'},
{文本:'我很好',作者:'男孩'},
{文本:'你好',作者:'女孩'},
{文本:'再见',作者:'男孩'}]
在上面的数组中,“Girl”author大于“Boy”author,因此它应该返回以下数组

[{text:'hello',author:'Girl'},
{文本:'hi',作者:'Boy'},
{文本:'你好吗',作者:'男孩'},
{文本:'我很好',作者:'男孩'},
{文本:'再见',作者:'男孩'}]
第二个例子:

[{text:'hi',author:'Boy'},
{文本:'hola',作者:'Mom'},
{文本:'你好吗',作者:'男孩'},
{文本:'我很好',作者:'男孩'},
{文本:'你好',作者:'女孩'},
{文本:'吃这个',作者:'妈妈'},
{文本:'再见',作者:'男孩'}]
第二个结果:

[{text:'hello',author:'Girl'},
{文本:'hola',作者:'Mom'},
{文本:'吃这个',作者:'妈妈'},
{文本:'hi',作者:'Boy'},
{文本:'你好吗',作者:'男孩'},
{文本:'我很好',作者:'男孩'},
{文本:'再见',作者:'男孩'}]
最后一个例子:

const数据=[
{文本:'hi',作者:'Boy'},
{文本:'hola',作者:'Mom'},
{文本:'hola',作者:'Mom'},
{文本:'hola',作者:'Mom'},
{文本:'你好吗',作者:'男孩'},
{文本:“我很好”,作者:'男孩'},
{文本:'你好',作者:'女孩'},
{文本:'吃这个',作者:'妈妈'},
{文本:“再见”,作者:“男孩”}
]
最后的结果(我不在乎男孩是第一还是妈妈是第一

const数据=[
{文本:'你好',作者:'女孩'},
{文本:'hola',作者:'Mom'},
{文本:'hola',作者:'Mom'},
{文本:'hola',作者:'Mom'},
{文本:'吃这个',作者:'妈妈'},
{文本:'hi',作者:'Boy'},
{文本:'你好吗',作者:'男孩'},
{文本:“我很好”,作者:'男孩'},
{文本:“再见”,作者:“男孩”}
]
您可以使用

array.sort((a, b) => {
  return a.author - b.author;
})

如果修改数据集并向其中添加计数,则应使用以下代码执行此操作

var data = [{ text: 'hi', author: 'Boy' },
{ text: 'hola', author: 'Mom' },
{ text: 'how are you', author: 'Boy' },
{ text: 'I\'m good', author: 'Boy' },
{ text: 'hello', author: 'Girl' },
{ text: 'eat this', author: 'Mom' },
{ text: 'Bye', author: 'Boy' }];

// add counts against each object
data.forEach(obj => {
  obj['count'] = data.filter((obj1) => obj1.author === 
    obj.author).length;
})

// user Array.sort function to sort your data
data.sort(function(a, b){
    if(a.count < b.count) return -1;
    if(a.count > b.count) return 1;
    return 0;
});
var data=[{text:'hi',author:'Boy'},
{文本:'hola',作者:'Mom'},
{文本:'你好吗',作者:'男孩'},
{文本:'我很好',作者:'男孩'},
{文本:'你好',作者:'女孩'},
{文本:'吃这个',作者:'妈妈'},
{文本:“再见”,作者:“男孩”};
//对每个对象添加计数
data.forEach(obj=>{
obj['count']=data.filter((obj1)=>obj1.author==
作者)长度;
})
//user Array.sort函数对数据进行排序
数据排序(函数(a,b){
如果(a.countb.count)返回1;
返回0;
});

不过,如果您从后端对该列表进行排序会更好。

您可以按
作者进行分组,并按计数对键进行排序,然后获得一个新的对象数组

var-array=[{text:'hi',author:'Boy'},{text:'hola',author:'Mom'},{text:'Boy'},{text:'good',author:'Boy'},{text:'hello',author:'Girl'},{text:'eat this',author:'Mom'},{text:'Bye',author:'Boy'},
温度=阵列。减少((r,o)=>{
如果(!r[o.author])r[o.author]=[];
r[o.author].push(o);
返回r;
}, {}),
结果=对象
.钥匙(临时)
.sort((a,b)=>temp[a].length-temp[b].length)
.flatMap(k=>temp[k]);
console.log(结果);

.as控制台包装{max height:100%!important;top:0;}
以下是此问题的解决方案。您可以使用此函数使用任何属性对其进行排序

console.clear();
const data=[{text:'hi',author:'Boy'},
{文本:'hola',作者:'Mom'},
{文本:'你好吗',作者:'男孩'},
{文本:'我很好',作者:'男孩'},
{文本:'你好',作者:'女孩'},
{文本:'吃这个',作者:'妈妈'},
{文本:“再见”,作者:“男孩”};
const sortBy=(值、数据)=>{
设排序数据=[];
const countValueObj=数据减少((acc,obj)=>{
常量authorValue=obj[value];
如果(!acc[authorValue])acc[authorValue]=1;
else acc[authorValue]++;
返回acc;
}, {})
const countValueArr=Object.key(countValueObj).sort((a,b)=>countValueObj[a]-countValueObj[b]);
countValueArr.forEach((val)=>{
常量filteredData=data.filter((obj)=>obj[value]==val);
sortedData=[…sortedData,…filteredData];
})
返回数据;
}
const output=sortBy('author',data);

console.log(output)
这能回答你的问题吗?你想按作者的数量排序吗?你能澄清一下吗?这个输入的输出是什么“[{text:'hi',author:'Boy'},{text:'hola',author:'Mom'},{text:'how'you',author:'Boy'},{text:'eat this',author:'Mom'}”@shilu那么如果有相同数量的作者怎么办?@shilu好的,那么请检查我对你文章的回答。@shilu你能提供你测试过的数据集吗?