我有一个字符串数组,我希望将其转换为对象数组。
array = ['a', 'b', 'c'];
我想生成
array= [
{'name': 'a', 'isChecked': false, 'availibility': 0 },
{'name': 'b', 'isChecked': false, 'availibility': 0 },
{'name': 'b', 'isChecked': false, 'availibility': 0 }
];
我在下面试过并仍然返回originalArray!
array.map((name) => ({
name,
isChecked: false,
availability: 0
}));
你会怎么做?
答案 0 :(得分:3)
您可以像这样使用map
:
array= ['a', 'b', 'c'];
let newArr = array.map(item => {
return {
'name': item,
'isChecked': false,
'availibility': 0
}
})
console.log(newArr);
答案 1 :(得分:2)
您需要使用以下内容,因为@ASDFGerte指出,map
不会修改原始对象,而是返回一个应该分配给变量的新对象。在这种情况下,我刚刚将其分配回原始array
变量。
var array = ['a', 'b', 'c'];
array = array.map((name) => ({
name,
isChecked: false,
availability: 0
}));
console.log(array);
答案 2 :(得分:2)
您的map()
按预期工作,但确实会返回一个新数组。如果要改变原始数组,请使用forEach()
array.forEach((val, i) => array[i] = {
name: val,
isChecked: false,
availability: 0
})
答案 3 :(得分:1)
老式的方式:
var outputArray = [];
var inputArray = ['a', 'b', 'c'];
for (var i=0, len = inputArray.length; i < len; i++) {
outputArray.push({
name : inputArray[i],
isChecked : false,
availability : 0
});
}
如果要使用map()
,则需要将对象存储在新数组中。