Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.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_Node.js - Fatal编程技术网

Javascript 如何根据属性值所包含的内容拆分数组项?

Javascript 如何根据属性值所包含的内容拆分数组项?,javascript,node.js,Javascript,Node.js,我有一个数组,发布在下面的代码部分。我试图实现的是,以这样的方式处理该数组,它应该被拆分为 基于属性“value”的值的四个不同数组。所以,对于mainArray中具有相同属性“value”值的所有条目,它们 应该在新数组中推送 JavaScript中是否有任何方法或方法可以有效地完成该任务 代码: mainArray = [ { key: '2', value: -20 }, { key: '3', value: 0 }, { key: '1', value: 10 }, { key: '5

我有一个数组,发布在下面的代码部分。我试图实现的是,以这样的方式处理该数组,它应该被拆分为 基于属性“value”的值的四个不同数组。所以,对于mainArray中具有相同属性“value”值的所有条目,它们 应该在新数组中推送

JavaScript中是否有任何方法或方法可以有效地完成该任务

代码

mainArray = 
[ { key: '2', value: -20 },
{ key: '3', value: 0 },
{ key: '1', value: 10 },
{ key: '5', value: 10 },
{ key: '7', value: 10 },
{ key: '4', value: 40 },
{ key: '6', value: 40 },
{ key: '8', value: 40 } ]
[ { key: '2', value: -20 }] //array1

[{ key: '3', value: 0 }] //array2

[{ key: '1', value: 10 }, //array3
 { key: '5', value: 10 },
 { key: '7', value: 10 }]

[{ key: '4', value: 40 }, //array4
 { key: '6', value: 40 },
 { key: '8', value: 40 }]
代码2

mainArray = 
[ { key: '2', value: -20 },
{ key: '3', value: 0 },
{ key: '1', value: 10 },
{ key: '5', value: 10 },
{ key: '7', value: 10 },
{ key: '4', value: 40 },
{ key: '6', value: 40 },
{ key: '8', value: 40 } ]
[ { key: '2', value: -20 }] //array1

[{ key: '3', value: 0 }] //array2

[{ key: '1', value: 10 }, //array3
 { key: '5', value: 10 },
 { key: '7', value: 10 }]

[{ key: '4', value: 40 }, //array4
 { key: '6', value: 40 },
 { key: '8', value: 40 }]
试试这个

var a=
[{键:'2',值:-20},
{键:“3”,值:0},
{键:'1',值:10},
{键:'5',值:10},
{键:'7',值:10},
{键:'4',值:40},
{键:'6',值:40},
{键:'8',值:40}]
var结果=对象值(a.reduce((acc,val)=>{
如果(根据[价值]){
acc[val.value]。推送(val)
}否则{
acc[val.value]=[val]
}
返回acc
},{}))
console.log(结果)
试试这个

var a=
[{键:'2',值:-20},
{键:“3”,值:0},
{键:'1',值:10},
{键:'5',值:10},
{键:'7',值:10},
{键:'4',值:40},
{键:'6',值:40},
{键:'8',值:40}]
var结果=对象值(a.reduce((acc,val)=>{
如果(根据[价值]){
acc[val.value]。推送(val)
}否则{
acc[val.value]=[val]
}
返回acc
},{}))
console.log(结果)
您可以使用:
constgrouped=u.groupBy(mainArray,'value');
const results=[…Object.values(grouped)]
您可以使用:
constgrouped=u.groupBy(mainArray,'value');

const results=[…Object.values(grouped)]
如果需要不同的数组,可以使用
filter
函数

mainArray = [
    { key: '2', value: -20 },
    { key: '3', value: 0 },
    { key: '1', value: 10 },
    { key: '5', value: 10 },
    { key: '7', value: 10 },
    { key: '4', value: 40 },
    { key: '6', value: 40 },
    { key: '8', value: 40 }
]

const array1 = mainArray.filter(a => a.value === -20)
const array2 = mainArray.filter(a => a.value === 0)
const array3 = mainArray.filter(a => a.value === 10)
const array4 = mainArray.filter(a => a.value === 40)

如果需要不同的数组,可以使用
过滤器
功能

mainArray = [
    { key: '2', value: -20 },
    { key: '3', value: 0 },
    { key: '1', value: 10 },
    { key: '5', value: 10 },
    { key: '7', value: 10 },
    { key: '4', value: 40 },
    { key: '6', value: 40 },
    { key: '8', value: 40 }
]

const array1 = mainArray.filter(a => a.value === -20)
const array2 = mainArray.filter(a => a.value === 0)
const array3 = mainArray.filter(a => a.value === 10)
const array4 = mainArray.filter(a => a.value === 40)

从主数组中获取所有唯一值,然后使用过滤器获取匹配的数组

var mainArray=[{
键:“2”,
值:-20
},
{
键:“3”,
数值:0
},
{
键:“1”,
数值:10
},
{
键:“5”,
数值:10
},
{
键:“7”,
数值:10
},
{
键:“4”,
价值:40
},
{
键:“6”,
价值:40
},
{
键:“8”,
价值:40
}
]
var-valueArray=[];
//从主数组中获取所有唯一值
mainArray.forEach(函数(项){
if(valueArray.indexOf(item.value)=-1){
valueArray.push(item.value)
}
});
//迭代值数组
valueArray.forEach(函数(项){
//筛选器将返回一个新数组,其中对象的值等于当前项
var filteredValue=mainArray.filter(函数(x){
返回x.value==项;
});
console.log(filteredValue)

})
从主数组中获取所有唯一值,然后使用筛选器获取匹配的数组

var mainArray=[{
键:“2”,
值:-20
},
{
键:“3”,
数值:0
},
{
键:“1”,
数值:10
},
{
键:“5”,
数值:10
},
{
键:“7”,
数值:10
},
{
键:“4”,
价值:40
},
{
键:“6”,
价值:40
},
{
键:“8”,
价值:40
}
]
var-valueArray=[];
//从主数组中获取所有唯一值
mainArray.forEach(函数(项){
if(valueArray.indexOf(item.value)=-1){
valueArray.push(item.value)
}
});
//迭代值数组
valueArray.forEach(函数(项){
//筛选器将返回一个新数组,其中对象的值等于当前项
var filteredValue=mainArray.filter(函数(x){
返回x.value==项;
});
console.log(filteredValue)

})
使用排序数组,您可以检查最后一个对象,并推送空数组以查找更改的值

var数组=[{key:'2',value:-20},{key:'3',value:0},{key:'1',value:10},{key:'5',value:10},{key:'7',value:10},{key:'4',value:40},{key:'6',value:40},{key:'8',value:40}],
分组=数组。减少((r,o,i,a)=>{
如果(!a[i-1]| a[i-1].value!==o.value){
r、 推送([]);
}
r[r.length-1]。推(o);
返回r;
}, [])
控制台日志(分组)

。作为控制台包装{max height:100%!important;top:0;}
使用排序数组,您可以检查最后一个对象并推送空数组以查找更改的值

var数组=[{key:'2',value:-20},{key:'3',value:0},{key:'1',value:10},{key:'5',value:10},{key:'7',value:10},{key:'4',value:40},{key:'6',value:40},{key:'8',value:40}],
分组=数组。减少((r,o,i,a)=>{
如果(!a[i-1]| a[i-1].value!==o.value){
r、 推送([]);
}
r[r.length-1]。推(o);
返回r;
}, [])
控制台日志(分组)

作为控制台包装{max height:100%!important;top:0;}
是按
值排序的数据
?因此本质上,您希望按值分组。检查凯撒·鲍蒂斯塔的回答。@NinaScholz是的,按值排序的数据是按值排序的数据。因此,本质上,您希望按值分组。检查凯撒·鲍蒂斯塔的回答。@NinaScholz是的,数据按值排序。请澄清,以下内容是什么意思:if(valueArray.indexOf(item.value)==-1){valueArray.push(item.value)}
indexOf
用于检查元素是否存在。如果元素存在,它将返回索引,否则它将返回-1请您另找时间解释此行:返回x.value==item;因为在我看来,项是一个对象,而您将其与值(x.value)进行比较,请您澄清以下内容是什么意思:if(valueArray.indexOf(item.value)==-1){valueArray.push(item.value)}
indexOf
用于检查元素是否存在。如果元素存在,它将返回索引,否则它将返回-1请您下次解释好吗