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

Javascript 如何从数组对象数组中获取特定属性?

Javascript 如何从数组对象数组中获取特定属性?,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,我有一个数组,每个数组由对象组成。这里是我所指内容的简化版本(它是我原始阵列的console.log)—— 每个数组都有以下格式的对象(从上面取第一个数组)- 其他数组类似,具有相同的属性和不同的值 我正在尝试从这些对象中的每一个获取name属性。我尝试了以下代码,但最终得到了一个未定义的值: const test1= array1.map(x=> x.values) // this gives me the array of arrays const test2 = te

我有一个数组,每个数组由对象组成。这里是我所指内容的简化版本(它是我原始阵列的console.log)——

每个数组都有以下格式的对象(从上面取第一个数组)-

其他数组类似,具有相同的属性和不同的值

我正在尝试从这些对象中的每一个获取name属性。我尝试了以下代码,但最终得到了一个未定义的值:

    const test1= array1.map(x=> x.values) // this gives me the array of arrays
    const test2 = test1.map(function(y){return y.name})// this is my attempt to get the 'name' attribute from all of the arrays that include the objects.
我错过了什么?是否有更好的方法使用箭头函数获取属性?

此处:

const arr = [
    [{name: 'a', date:'x'}, {name: 'b', date:'y'}],
    [{name: 'c', date:'x'}, {name: 'd', date:'y'}]
];

const names = arr.map(el => el.map(obj => obj.name));

console.log(names.join());
console.log(names.flat());

可以使用flat()将名称保留在数组中,也可以使用join()将名称合并到字符串中。

因为在第一个映射中,
x
是一个数组,而不是一个对象。因此,没有
。您应该映射内部数组,然后获得所需的值

const arr=[
[
{
名称:“测试”,
得分:40分,
日期:“2018-09-18T00:00:00.000Z”
},
{名称:“test2”,分数:50,日期:“2018-09-18T00:00:00.000Z”}
],
[
{
姓名:"富",,
得分:40分,
日期:“2018-09-18T00:00:00.000Z”
},
{名称:“酒吧”,分数:50,日期:“2018-09-18T00:00:00.000Z”}
]
];
常数test1=arr
.map(x=>x.map(y=>y.name))
.减少((acc,el)=>[…acc,…el]);

log(test1)这应该可以正常工作。您需要展平数组结构并映射名称

const数组=[[{name:'test1'},{name:'test2'}],{name:'test3'},{name:'test4'}]
const names=array.reduce((acc,innerArray)=>{
return[…acc,…innerArray.map(entry=>entry.name)]
}, [])
console.log(名称)
/*测试数据*/
阵列1=[
{名称:'test1',分数:40,日期:'2018-09-18T00:00:00.000Z'},
];
阵列2=[
{名称:'test4',分数:50,日期:'2018-09-18T00:00:00.000Z'},
{名称:'test5',分数:40,日期:'2018-09-18T00:00:00.000Z'},
];
阵列3=[
{名称:'test6',分数:50,日期:'2018-09-18T00:00:00.000Z'},
{名称:'test7',分数:50,日期:'2018-09-18T00:00:00.000Z'},
{名称:'test8',分数:40,日期:'2018-09-18T00:00:00.000Z'},
{名称:'test9',分数:50,日期:'2018-09-18T00:00:00.000Z'},
];
测试结果=[array1,array2,array3];
//解决方案
函数getListOfName(){
让名称=[];
testResults.map(testResult=>{
testResult.map(({name})=>{if(name)names.push(name)})
})
返回姓名;
}
log(“名称的完整列表”,getListOfName());
//如果要将每个数组中的名称限制为K个
函数getFirstKNamesfromArray(限制){
让名称=[];
testResults.map(testResult=>{
testResult.map(({name},index)=>{
if(name&(indexlog(“每个数组的前2个名称”,getFirstKNamesfromArray(2))将其展平,并将其映射到名称,反之亦然

首先展平它,然后
map

const数组=[[{name:'test1'},{name:'test2'}],{name:'test3'},{name:'test4'}]
var res=[].concat(…数组).map({name})=>name);

控制台日志(res)考虑map返回一个数组;你可以迭代它。过滤或还原也可以这样做

const test1= array1.map(x=> x.values) // x doesn't have a property named  "value"
//simply use forEach
array1.forEach((el) => console.log(el.name))
如果要捕获集合中的名称,请执行以下操作:

const let container = [];
array1.forEach((el) => container.push(el.name))
更好地理解此迭代器函数的一个好方法是首先使用循环,然后尝试将代码“翻译”为循环之一

const test1= array1.map(x=> x.values)

测试2将给出所需的结果。

您可以向我们展示一个示例输出吗?请提供一个示例数据,说明您正在使用的内容以及您的预期结果。谢谢。这正是我所寻找的。我的荣幸:-)只是好奇-有没有办法只从每个数组对象中获取前两个“name”值?@221 testResults.map(testResult=>{testResult.map((test,index)=>{if(index
const let container = [];
array1.forEach((el) => container.push(el.name))
const test1= array1.map(x=> x.values)
let requiredArr = [];

let array1 = [Array(2), Array(3), Array(2)]

let test2 = array1.map(x => x.map(y => requiredArr(y.name));