Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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 Typescript:相当于linq.GroupBy(key=>;key.IdItem);_Javascript_Linq_Typescript - Fatal编程技术网

Javascript Typescript:相当于linq.GroupBy(key=>;key.IdItem);

Javascript Typescript:相当于linq.GroupBy(key=>;key.IdItem);,javascript,linq,typescript,Javascript,Linq,Typescript,我正在尝试执行与.GroupBy(key=>key.IdItem)等效的操作从linq到typescript 我所尝试的: let parents = value.reduce((parents, parent) => ({ ...ubc, [parent.IdItem]: [...(parents[u.IdItem] || []), parent], }), {}) as Array<ItemsViewModel>

我正在尝试执行与
.GroupBy(key=>key.IdItem)等效的操作从linq到typescript

我所尝试的:

let parents = value.reduce((parents, parent) => ({
            ...ubc,
            [parent.IdItem]: [...(parents[u.IdItem] || []), parent],
        }), {}) as Array<ItemsViewModel>;


Array.prototype.map.call(parents, parent => {
    if (parents.length > 1) {
        throw new Error('The input sequence contains more than one element');
    }
    else if (!parents.length) {
        throw new Error('The input sequence is empty');
    }
    return parent[0];
});
let parents=value.reduce((parents,parent)=>({
…ubc,
[parent.IdItem]:[…(parents[u.IdItem]| |[]),parent],
}),{})作为数组;
Array.prototype.map.call(父级,父级=>{
如果(parents.length>1){
抛出新错误(“输入序列包含多个元素”);
}
否则如果(!parents.length){
抛出新错误(“输入序列为空”);
}
返回父项[0];
});
我做错了什么?

你可以这样试试--


此外,如果您只是想要唯一的父项,那么可以使用seed id的哈希集--

你可以这样试试--


此外,如果您只是想要唯一的父项,那么可以使用seed id的哈希集--


您正在还原为一个对象,它不是一个数组。介意提供一个
value
的示例吗?您正在还原为一个对象,它不是数组。介意提供一个
value
的示例吗?
let parentsById = 
  value.reduce((dict, parent) => {
    let { IdItem } = parent;

    dict[IdItem] = dict[IdItem] || [];
    dict[IdItem].push(parent);
    return dict;
    }, {});

let result = 
  Object.keys(parentsById)
    .map(k => {
      let parents = parentsById[k];
      if(parents.length !== 1) { throw new Error("Must contain a single item"); }
      return parents[0];
      });
let result = [];
let seenIds = {};

for(let parent of value) {
  let { IdItem } = parent;
  if(!seenIds[IdItem]) {
    result.push(parent);
    seenIds[IdItem] = true;
  }
}