我有一个JavaScript数组。
volumes:
maria_volume:
external:
name: volume-name
我想将此特定数组转换为对象数组,如下所示。
["124857202", "500255104", "78573M104"]
答案 0 :(得分:4)
使用Array#map
将每个值转换为不同的值:
var newArr = arr.map(function(value) {
return {name: value};
});
Array#map
将回调应用于数组中的每个元素,并返回一个包含回调返回值的新数组。
答案 1 :(得分:0)
我会看一下javascript中的array.map函数。
const mappedArr = arr.map(value => {
return {
name: value
}
})
答案 2 :(得分:0)
另一种方法 - Array#reduce
。
var arr = ["124857202", "500255104", "78573M104"];
var res = arr.reduce(function(s, a){
s.push({name: a});
return s;
}, [])
console.log(res);
答案 3 :(得分:0)
您可以使用
var arrayOfStrings = ["124857202", "500255104", "78573M104"];
var arrayOfObjects = [];
arrayOfStrings.forEach(function (element, index) {
arrayOfObjects.push({
name: element,
})
});
答案 4 :(得分:0)
我想将该特定数组转换为对象数组,如下 如下所示
如果要更改实际数组(而不是创建新数组),则可以使用for循环来迭代数组的索引。对于每个索引,您可以使用对象{name: arr[i]}
替换该值。该对象具有一个name
键,并具有一个作为当前元素arr[i]
的值。
const arr = [ "124857202", "500255104", "78573M104" ];
for(let i = 0; i < arr.length; i++) {
arr[i] = {name: arr[i]};
}
console.log(arr);
答案 5 :(得分:0)
Felix Kling' answer、gehsekky's answer 和 Nick Parsons' answer 的第二部分是最正确的。为了完整起见,这里有一个使用 Underscore 的 _.map 的版本:
import { map } from 'underscore';
var result = map(array, name => ({name}));
对于这个特定的用例,_.map
与 Array.prototype.map
相比并没有给您带来太多好处,只是增加了一点便携性。然而,由于 Underscore 的 iteratee 简写,使用 _.map
对大脑来说更容易一些:
// Underscore map
var array = map(result, 'name');
// Array.prototype.map
var array = result.map(obj => obj.name);
当您需要迭代普通对象时,Underscore 的 map
和其他集合函数非常有用,因为 JavaScript 的内置方法根本不支持:
var objectOfStrings = {
first: "124857202",
second: "500255104",
third: "78573M104"
};
// to array of strings, Underscore
var arrayOfStrings = map(objectOfStrings);
// to array of strings, vanilla JS
var arrayOfStrings = [], value;
for (key in objectOfStrings) {
arrayOfStrings.push(objectOfStrings[key]);
}
// to array of objects, Underscore
var arrayOfObjects = map(objectOfStrings, name => ({name}));
// to array of objects, vanilla JS
var arrayOfStrings = [], name;
for (key in objectOfStrings) {
name = objectOfStrings[key];
arrayOfStrings.push({name});
}
var objectOfObjects = {
first: {name: "124857202"},
second: {name: "500255104"},
third: {name: "78573M104"}
};
// to array of strings, Underscore
var arrayOfStrings = map(objectOfStrings, 'name');
// to array of strings, vanilla JS
var arrayOfStrings = [], value;
for (key in objectOfObjects) {
arrayOfStrings.push(objectOfObjects[key].name);
}
// to array of objects, Underscore
var arrayOfObjects = map(objectOfObjects);
// to array of objects, vanilla JS
var arrayOfObjects = [], value;
for (key in objectOfStrings) {
arrayOfObjects.push(objectOfStrings[key]);
}