Javascript循环遍历对象数组并获取两个值并插入到新的对象数组中

Javascript循环遍历对象数组并获取两个值并插入到新的对象数组中,javascript,arrays,object,ecmascript-6,Javascript,Arrays,Object,Ecmascript 6,我有一个如下所示的对象数组: rows [ { id: 3, title: "sometitle", catid: 55, img: "file" }, { id: 4, title: "sometitle", catid: 55, img: "file" }, { id: 5, title: "sometitle", catid: 55, img: "file" }, ] newArr [ { id: 3, img: "file" }, { id: 4, i

我有一个如下所示的对象数组:

rows [
{ id: 3,
 title: "sometitle", 
 catid: 55, 
 img: "file" },
{ id: 4,
 title: "sometitle", 
 catid: 55, 
 img: "file" },
{ id: 5,
 title: "sometitle", 
 catid: 55, 
 img: "file" },
]
newArr [
{ id: 3,
 img: "file" },
{ id: 4,
 img: "file" },
{ id: 5,
 img: "file" },
]
我现在要做的是循环遍历对象数组,从每个对象中获取两个值(id和img),然后将其插入到一个新的对象数组中,结果如下所示:

rows [
{ id: 3,
 title: "sometitle", 
 catid: 55, 
 img: "file" },
{ id: 4,
 title: "sometitle", 
 catid: 55, 
 img: "file" },
{ id: 5,
 title: "sometitle", 
 catid: 55, 
 img: "file" },
]
newArr [
{ id: 3,
 img: "file" },
{ id: 4,
 img: "file" },
{ id: 5,
 img: "file" },
]

您可以使用
map
轻松完成此操作

var行=[
{id:3,
标题:“sometitle”,
catid:55,
img:“文件”},
{id:4,
标题:“sometitle”,
catid:55,
img:“文件”},
{id:5,
标题:“sometitle”,
catid:55,
img:“文件”},
];
var newArr=rows.map(函数(elem){
返回{
id:elem.id,
img:elem.img
};
});

console.log('newArr',newArr)您可以使用
map
轻松完成此操作

var行=[
{id:3,
标题:“sometitle”,
catid:55,
img:“文件”},
{id:4,
标题:“sometitle”,
catid:55,
img:“文件”},
{id:5,
标题:“sometitle”,
catid:55,
img:“文件”},
];
var newArr=rows.map(函数(elem){
返回{
id:elem.id,
img:elem.img
};
});
console.log('newArr',newArr)经典

const行=[{
id:3,
标题:“sometitle”,
catid:55,
img:“文件”
},
{
id:4,
标题:“sometitle”,
catid:55,
img:“文件”
},
{
id:5,
标题:“sometitle”,
catid:55,
img:“文件”
},
];
const newArr=rows.map({id,img})=>({id,img}));
控制台日志(newArr)经典

const行=[{
id:3,
标题:“sometitle”,
catid:55,
img:“文件”
},
{
id:4,
标题:“sometitle”,
catid:55,
img:“文件”
},
{
id:5,
标题:“sometitle”,
catid:55,
img:“文件”
},
];
const newArr=rows.map({id,img})=>({id,img}));

控制台日志(newArr)
只需通过传递
回调
函数来使用
map
方法

let rows=[{id:3,title:“sometitle”,catid:55,img:“file”},{id:4,title:“sometitle”,catid:55,img:“file”},{id:5,title:“sometitle”,catid:55,img:“file”}]
log(rows.map)(函数({id,img}){
返回{id,img};

}));
只需通过传递
回调
函数来使用
map
方法

let rows=[{id:3,title:“sometitle”,catid:55,img:“file”},{id:4,title:“sometitle”,catid:55,img:“file”},{id:5,title:“sometitle”,catid:55,img:“file”}]
log(rows.map)(函数({id,img}){
返回{id,img};
}));ES6方法使用:

const行=[
{id:3,标题:“sometitle”,catid:55,img:“file”},
{id:4,标题:“sometitle”,catid:55,img:“file”},
{id:5,标题:“sometitle”,catid:55,img:“file”},
];
const out=rows.map({id,img})=>({id,img}));
控制台。注销ES6方法使用:

const行=[
{id:3,标题:“sometitle”,catid:55,img:“file”},
{id:4,标题:“sometitle”,catid:55,img:“file”},
{id:5,标题:“sometitle”,catid:55,img:“file”},
];
const out=rows.map({id,img})=>({id,img}));

控制台。注销使用此代码:-

let rows = [
{ id: 3, title: "sometitle", catid: 55, img: "file" },
{ id: 4, title: "sometitle", catid: 55, img: "file" },
{ id: 5, title: "sometitle", catid: 55, img: "file" }]

let newRows = [];

rows.forEach(function(value,index){
      let obj = {};
      obj.id = value['id'],
      obj.img = value['img']
      newRows.push(obj);
});

使用此代码:-

let rows = [
{ id: 3, title: "sometitle", catid: 55, img: "file" },
{ id: 4, title: "sometitle", catid: 55, img: "file" },
{ id: 5, title: "sometitle", catid: 55, img: "file" }]

let newRows = [];

rows.forEach(function(value,index){
      let obj = {};
      obj.id = value['id'],
      obj.img = value['img']
      newRows.push(obj);
});

这不是Java,但行在哪里。你不是在做一条线,你在做一个数组,所以如果你在做一条线,你最好只做变量

试试这个


这不是Java,而是行在哪里。你不是在做一条线,你在做一个数组,所以如果你在做一条线,你最好只做变量

试试这个


这不是一个真正的答案,使用了其他答案:但是:为了好玩,我对提出的解决方案进行了一些粗略的测试(我使用了一台超级旧电脑和Firefox,您的结果可能会有所不同)

只是为了好玩,为了利用我从其他问题中提取的StackOverflow:)添加了对内容的引用

编辑在测试8中添加了接受的答案

我的结果:运行您自己的测试,多次结果会有所不同

test0 forEach 78.75
test1地图箭头82.6
test2映射函数78.85
紧凑型12.6的测试3阴性
13.3的测试4
61.55的test5缓存len
测试6长时间为负10
test7为阴性,而test12.5为阴性
Test8Map接受了91.35//接受的答案,有时速度更快
第二次执行:注意它是如何变化的**运行您自己的测试**
test0 forEach 155.95//几乎总是比较宽松的
test1地图箭头13.25
test2映射函数14.9
紧凑型7/测试3为负//有时获胜!
18.7的测试4
7.8的test5缓存len
测试6长时间为负61.65
test7为阴性,而test23.4为阴性
test8 map接受10.15//奇怪,它有时快,有时不快
在我添加最后一个测试之前:(因此注释是相关的)
100000上的测试名称平均毫秒数
test0 forEach 279.15
test1地图箭头21.25
test2映射函数10.1
紧凑型22.6的测试3阴性
15.55的测试4
18.75的test5缓存len
长185.7的测试6为阴性
测试7阴性,而35.05
//两次执行100次而不是20次
/*测试100次
test0 forEach 205.56
test1地图箭头20.35
test2映射函数20.72
compact 27.07的测试3阴性
40.75的测试4
18.39的test5缓存len
测试6长时间为负10.37
test7为阴性,而test7为12.93
test8地图接受9.53
又是100次
test0 forEach 151.19
test1地图箭头18.22
test2映射函数40.27
紧凑型87.53的测试3阴性
48.18的测试4
17.14的test5缓存len
测试6长时间为负14.06
test7为阴性,而test16.53为阴性
test8地图接受13.41
代码摘录:test2

`var newRows2=rows.map(函数({id,img}){return{id,img};})`这不是一个真正的答案,使用了其他答案:但是:为了好玩,我对提供的解决方案进行了一些粗略的测试(我使用了一台超级旧电脑和Firefox,您的结果可能会有所不同)

只是为了好玩,为了利用我从其他问题中提取的StackOverflow:)添加了对内容的引用

编辑添加了