将字符串数组转换为对象数组
Convert array of strings into an array of objects
我有这个 JavaScript 数组:
[ "124857202", "500255104", "78573M104" ]
我想将这个特定数组转换为对象数组,如下所示:
[
{ name: "124857202" },
{ name: "500255104" },
{ name: "78573M104" }
]
使用Array#map
将每个值转换为不同的值:
var newArr = arr.map(function(value) {
return {name: value};
});
Array#map
将回调应用于数组中的每个元素,并且 return 是一个包含回调的 return 值的新数组。
我会看一下 javascript 中的 array.map 函数。
const mappedArr = arr.map(value => {
return {
name: value
}
})
另一种方法 - Array#reduce
.
var arr = ["124857202", "500255104", "78573M104"];
var res = arr.reduce(function(s, a){
s.push({name: a});
return s;
}, [])
console.log(res);
您可以使用
var arrayOfStrings = ["124857202", "500255104", "78573M104"];
var arrayOfObjects = [];
arrayOfStrings.forEach(function (element, index) {
arrayOfObjects.push({
name: element,
})
});
I want to convert this particular array into an array of objects as
shown below
如果您想就地更改实际数组(而不是创建新数组),您可以使用 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);
或者,如果你想创建一个新数组并保持原数组不变,你可以使用 , here it can be re-written to use more modern ES6 features to make it more concise, such as an arrow function and shorthand property names:
const arr = [ "124857202", "500255104", "78573M104" ];
const res = arr.map(name => ({name}));
console.log(res);
, and the second part of are the most correct. For completeness, here is a version that uses Underscore's _.map:
import { map } from 'underscore';
var result = map(array, name => ({name}));
对于这个特定的用例,_.map
与 Array.prototype.map
相比并没有给你带来太多好处,只是增加了一点便携性。然而,由于 Underscore 的迭代速记,使用 _.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]);
}
我有这个 JavaScript 数组:
[ "124857202", "500255104", "78573M104" ]
我想将这个特定数组转换为对象数组,如下所示:
[
{ name: "124857202" },
{ name: "500255104" },
{ name: "78573M104" }
]
使用Array#map
将每个值转换为不同的值:
var newArr = arr.map(function(value) {
return {name: value};
});
Array#map
将回调应用于数组中的每个元素,并且 return 是一个包含回调的 return 值的新数组。
我会看一下 javascript 中的 array.map 函数。
const mappedArr = arr.map(value => {
return {
name: value
}
})
另一种方法 - Array#reduce
.
var arr = ["124857202", "500255104", "78573M104"];
var res = arr.reduce(function(s, a){
s.push({name: a});
return s;
}, [])
console.log(res);
您可以使用
var arrayOfStrings = ["124857202", "500255104", "78573M104"];
var arrayOfObjects = [];
arrayOfStrings.forEach(function (element, index) {
arrayOfObjects.push({
name: element,
})
});
I want to convert this particular array into an array of objects as shown below
如果您想就地更改实际数组(而不是创建新数组),您可以使用 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);
或者,如果你想创建一个新数组并保持原数组不变,你可以使用
const arr = [ "124857202", "500255104", "78573M104" ];
const res = arr.map(name => ({name}));
console.log(res);
import { map } from 'underscore';
var result = map(array, name => ({name}));
对于这个特定的用例,_.map
与 Array.prototype.map
相比并没有给你带来太多好处,只是增加了一点便携性。然而,由于 Underscore 的迭代速记,使用 _.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]);
}