Javascript使用IF语句填充数组

时间:2017-06-22 04:05:55

标签: javascript arrays

有没有办法用if条件填充数组?

例如

cars = [
  {id:1,color:'red'},
  {id:2,color:'blue'},
  {id:3,color:'blue'}
]

我需要创建一个新数组,它将获取ID的值和一个类型的新字段。

if color = red, type = 1, else type = 0.

我试过这个,但它不适用于javascript。

var newArray = [
   for(var car in cars){
       newId: car.id,
       if(car.color == 'red'){
          type: '1',
       else
          type: '0'
   }
]

返回值应为

newArray = [
       {newId:1,type:'1'},
       {newId:2,type:'0'},
       {newId:3,type:'0'}
]

请帮助

5 个答案:

答案 0 :(得分:4)

您可以轻松地map将原始数组添加到新数组

const cars = [{"id":1,"color":"red"},{"id":2,"color":"blue"},{"id":3,"color":"blue"}]

const newArray = cars.map(car => ({
  newId: car.id,
  type: car.color === 'red' ? '1' : '0'
}))

console.info(newArray)

如果您需要支持IE,这将适用于v9 +

var newArray = cars.map(function(car) {
  return {
    newId: car.id,
    type: car.color === 'red' ? '1' : '0'
  }
})

9之前的IE版本不支持Array.prototype.map。如果您需要支持,请参阅此pollyfill

答案 1 :(得分:1)

我相信这就是你要找的东西:

var newArray = [];
for(var car in cars) {
    var obj = {newId: car.id};
    if(car.color === 'red') {
        obj['type'] = '1';
    } else {
        obj['type'] = '0';
    }
    newArray.push(obj);
}

答案 2 :(得分:1)

给定数组是错误的,如果您的数组看起来像这样:

cars =[
  {id:1,color:"red"},
  {id:2,color:"blue"},
  {id:3,color:"blue"}
];

然后你应该这样做:

var newArray = cars.map((car) => { let type; if(car.color === "blue") type = 1; else type = 0; return { id: car.id, color: car.color, type }})

答案 3 :(得分:0)

请尝试使用此代码:

     var newArray = [];
      for(var car in cars){
         if(car.color == 'red'){
             newArray.push({newId: car.id,type: '1'});
           } else {
              newArray.push({newId: car.id,type: '0'});
           }
       }

答案 4 :(得分:0)

这是Array Map功能的用途,你可以从另一个数组创建。

但是,您的数组错误,并且已在以下代码中进行了更正:

cars =[
    {id:1,color:'red'},
    {id:2,color:'blue'},
    {id:3,color:'blue'}
]
newCarArray=cars.map(function(car){
    if(car.color =='red'){
         return {newId:car.id, type:1}
    }
     return {newId:car.id, type:0}
})
console.log (newCarArray)