简体   繁体   中英

Javascript return and map to an object

I've an object that I would like to return two value and map them into 1 object.

Object

Itemlist:[
{name: 'Chicken', searchParam: 'chicken', search: true},
{name: 'table', searchParam: 'table', search: false},
{name: 'books', searchParam: 'books', search: true}]

Would like to return from Itemlist searchParam and search and map to an object that a result would be:

{chicken: true},{table: false},{books: true},

So return would be something like

{ Itemlist[0].searchParam :Itemlist[0].search }

You can use array#map to get an array of object which contains name and search value from each object of itemlist.

 var itemlist = [{name: 'Chicken', searchParam: 'chicken', search: true},{name: 'table', searchParam: 'table', search: false},{name: 'books', searchParam: 'books', search: true}]; var result = itemlist.map(({searchParam, search}) => ({[searchParam]: search})); console.log(result); 

ES5 Code :

 var itemlist = [{name: 'Chicken', searchParam: 'chicken', search: true},{name: 'table', searchParam: 'table', search: false},{name: 'books', searchParam: 'books', search: true}]; var result = itemlist.map(function(item) { var obj = {}; obj[item.searchParam] = item.search; return obj; }); console.log(result); 

You could do

 let arr = [ {name: 'Chicken', searchParam: 'chicken', search: true}, {name: 'table', searchParam: 'table', search: false}, {name: 'books', searchParam: 'books', search: true}]; let result = arr.reduce((a, b) => { let prop = b.searchParam; a[prop] = b.search; return a; }, {}); console.log(result); 

You can create a new object, then assign the properties with the [] syntax

var result = {};
result[Itemlist[0].searchParam] = Itemlist[0].search;
return result;

 var itemlist = [{ name: 'Chicken', searchParam: 'chicken', search: true }, { name: 'table', searchParam: 'table', search: false }, { name: 'books', searchParam: 'books', search: true }]; var list = itemlist.map(function(item){ return {[item['name']] : item.search} }); console.log(list); 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM