创建单个对象我有两个相同长度的阵列使用两个阵列
ids = [123, 456, 789, ...., 999];
names = ['foo', 'bar', ... , 'zzz'];
我想创建像
[ {id: 123, name: 'foo'}, {id: 123, name: 'bar'}, ..., {id: 999, name: 'zzz'} ]
我试图避免forEach
如果可能的数组。
有什么建议吗?
创建单个对象我有两个相同长度的阵列使用两个阵列
ids = [123, 456, 789, ...., 999];
names = ['foo', 'bar', ... , 'zzz'];
我想创建像
[ {id: 123, name: 'foo'}, {id: 123, name: 'bar'}, ..., {id: 999, name: 'zzz'} ]
我试图避免forEach
如果可能的数组。
有什么建议吗?
是map
好吗?
ids = [123, 456, 789, 999];
names = ['foo', 'bar', 'baz', 'zzz'];
result = ids.map(function(_, i) {
return {id: ids[i], name: names[i]}
});
console.log(result)
如果你不希望使用任何高阶函数,那么就这样做:
var objects = [];
for (var i = 0; i < ids.length; i++) {
objects.push({id: ids[i], name: names[i]});
}
无需forEach
这里。使用map
,与forEach
类似。
var ids = [123, 456, 999];
var names = ['foo', 'bar', 'zzz'];
var result = ids.map(function (currentId, index) {
return {
id: currentId,
name: names[index]
};
});
console.log(result);
的forEach
版本是这样的(注意,他们是多么相似):
var ids = [123, 456, 999];
var names = ['foo', 'bar', 'zzz'];
var result = [];
ids.forEach(function(currentId, index) {
result.push({
id: currentId,
name: names[index]
});
});
console.log(result);
下面的代码使用foreach
但你不需要来处理它。我希望这会对你有用。
ids = [123, 456, 789, 999];
names = ['foo', 'bar', 'zab', 'zzz'];
result = ids.map(function(_, i) {
return {id: ids[i], name: names[i]}
});
console.log(result)
这次是或多或少我的回答也是如此。只是想为OP添加一个免责声明,即使用两个独立数组,可能会出现一个数组与另一个数组的长度不相等的情况,在这种情况下,您最终可能不会将每个数组创建为文字,或者更糟糕,'ids'数组比'names'有更多的元素,这会导致索引超出范围的错误。 –