我试图改变这一点:
var pets = [
[
['dog', 'Harry'], ['age', 2]
],
[
['dog', 'Roger'], ['age', 5]
]
]
进入这个:
var dogs = [
{dog: 'Harry', age: 2},
{dog: 'Roger', age: 5}
]
我一直卡住了。这是我到目前为止所做的。任何指向正确方向的指针都将非常感激。任何有关使其更具可读性的建议对我来说也会有所帮助。感谢
function arrayToObj(arr) {
var newArray = [];
for (var i = 0; i < arr.length; i++) {
var obj = {};
for (var j = 0; j < arr[i].length; j++) {
var key = arr[i][j][0];
obj[key] = key;
}
newArray[i] = obj;
}
return newArray;
}
答案 0 :(得分:1)
您可以使用Array#map
和Array#reduce
方法。
var pets = [
[
['dog', 'Harry'],
['age', 2]
],
[
['dog', 'Roger'],
['age', 5]
]
];
var dogs = pets.map(function(v) { // iterate over the array
return v.reduce(function(obj, arr) { // iterate over inner array to generate object
obj[arr[0]] = arr[1]; // define object property based on inner array element
return obj; // return updated object
}, {}); // set initial value as an empty object
})
console.log(dogs);
&#13;
仅供参考:如果您想坚持使用自己的代码,则需要使用obj[key] = key;
更新第obj[key] = arr[i][j][1];
行,或者不需要{{1}变量简单地使用单行代码key
。
obj[arr[i][j][0]] = arr[i][j][1];
&#13;
答案 1 :(得分:1)
这是Map
构造函数可以自动执行的操作:
var dogs = pets.map(pairs => new Map(pairs))
答案 2 :(得分:1)
function arrayToObj(arr) {
return arr.map((item) => {
var object = {};
item.forEach((data) => {
object[data[0]] = data[1];
})
return object
})
}
答案 3 :(得分:0)
var pets = [
[
['dog', 'Harry'], ['age', 2]
],
[
['dog', 'Roger'], ['age', 5]
]
]
var petArr = pets.reduce(function(a, b) {
var obj = {}
b.forEach(function(set){
obj[set[0]] = set[1]
})
return a.concat(obj)
}, [])
console.log(petArr)
答案 4 :(得分:0)
更改nodetool assassinate
而不是obj[key] = arr[i][j][1];
我可以用map和其他数组方法完成,但我想表明你错了。
obj[key] = key
&#13;
答案 5 :(得分:0)
我希望以下脚本能为您提供帮助。
function arrayToObj(arr) {
var newArray = [];
for (var i = 0; i < arr.length; i++) {
var obj = {
dog: '',
age: ''
};
obj.dog = arr[i][0][1];
obj.age = arr[i][1][1];
newArray.push(obj);
}
return newArray;
}
答案 6 :(得分:0)
您可以使用嵌套在
for()
循环中的简单forEach()
循环来获取所需的结果。 QUICK-TEST HERE
var pets = [
[
['dog', 'Harry'],
['age', 2]
],
[
['dog', 'Roger'],
['age', 5]
]
];
function arrayToObject(arrData) {
var objData = [];
arrData.forEach(function(data, index) {
var tmpObject = {};
for (var i = 0; i < data.length; i++) {
var arr = data[i];
tmpObject[arr[0]] = arr[1];
}
objData.push(tmpObject);
});
return objData;
}
console.log( arrayToObject(pets) );
&#13;
// YIELDS::
Array[2]
0: Object
age: 2
dog: "Harry"
1: Object
age: 5
dog: "Roger"
</script>
答案 7 :(得分:0)
您可以将值作为属性分配给数组,将数组长度设置为零,并将数组类型转换为普通对象,并将其分配给同一元素。
NSURL *imagePath = [[NSURL alloc] initWithString:[[NSBundle mainBundle] pathForResource:@"example" ofType:@"gif"]];
NSData *gifItem = [NSData dataWithContentsOfURL:imagePath];
NSArray *sharingItems = @[gifItem, @"TEST"];
UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:sharingItems applicationActivities:nil];
[self presentViewController:activityController animated:YES completion:nil];
&#13;