Javascript返回并映射到对象

时间:2017-09-29 13:30:59

标签: javascript object dictionary mapreduce

我想要一个对象,我想返回两个值并将它们映射到一个对象。

对象

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

想从Itemlist searchParam返回并搜索并映射到一个结果将是的对象:

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

所以返回会像

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

4 个答案:

答案 0 :(得分:6)

您可以使用array#map获取一个对象数组,其中包含来自itemlist的每个对象的namesearch值。



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代码:



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);




答案 1 :(得分:1)

你可以做到

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);

答案 2 :(得分:0)

您可以创建一个新对象,然后使用[]语法

指定属性
var result = {};
result[Itemlist[0].searchParam] = Itemlist[0].search;
return result;

答案 3 :(得分:0)

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);