有没有办法用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'}
]
请帮助
答案 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)