将2个属性值合并为一个

时间:2014-12-09 18:26:13

标签: javascript arrays json object

我是Javascript的新手,我需要转换它:

car :[ 
    { name: "Bwm", color:"red" },
    { name: "Ford", color:"black" },
    { name: "Ferrari", color:"yellow" },
];

要:

anotherObject: {
    Bwm: "red",
    Ford:"black",
    Ferrari:"yellow"
}

5 个答案:

答案 0 :(得分:1)

您可以这样做:

car = [ 
    { name: "Bwm", color:"red" },
    { name: "Ford", color:"black" },
    { name: "Ferrari", color:"yellow" },
];

var anotherObject = {};
for (var i = 0, len = car.length; i < len; i++){
  anotherObject[car[i].name] = car[i].color;
}

console.log(anotherObject);

请注意,当您声明car var时,您有一个sintax错误,替换&#39;:&#39; by&#39; =&#39;。

答案 1 :(得分:1)

你可以这样做。

var car = [ 
    { name: "Bwm", color:"red" },
    { name: "Ford", color:"black" },
    { name: "Ferrari", color:"yellow" },
];

var anotherObject = {};

car.forEach(function (item,i) { 
    anotherObject[item.name] = item.color;
});

console.log(anotherObject );

答案 2 :(得分:0)

您应该遍历第一个对象并填充第二个对象。

var car = [ 
     { name: "Bwm", color:"red" },
     { name: "Ford", color:"black" },
     { name: "Ferrari", color:"yellow" },
];


var anotherObject = {};

for (var i in car)
{
    anotherObject[car[i].name] = car[i].color;
}

console.log(anotherObject);

http://jsfiddle.net/qz5vgre7/

答案 3 :(得分:0)

只需将旧数组缩减为新对象:

var anotherObject = car.reduce(function(obj, value) {
  obj[value.name] = value.color;
  return obj;
}, {});

您不必以这种方式担心数组索引。

答案 4 :(得分:0)

有许多方法可以在javascript中处理对象和数组。

以上所有答案都是很好的例子。

我想使用map或forEach函数添加另一种方法来实现这一点。

map函数允许您对数组的每个项应用函数并返回替换值。 forEach函数类似于map函数,但没有返回类型。

使用forEach功能

var car = [{
  name: "Bwm",
  color: "red"
}, {
  name: "Ford",
  color: "black"
}, {
  name: "Ferrari",
  color: "yellow"
}, ];

var anotherObject = {};
car.forEach(function(item) {
  this[item.name] = item.color;
}, anotherObject);

使用地图功能

var car = [{
  name: "Bwm",
  color: "red"
}, {
  name: "Ford",
  color: "black"
}, {
  name: "Ferrari",
  color: "yellow"
}, ];

var anotherObject = car.map(function(item) {
  var obj = {};
  obj[item.name] = item.color;
  return obj;
});