由于 stackoverflow 错误导致的一些文本 一些文本由于计算器溢出错误 一些文本由于计算器溢出错误 一些文本由于计算器溢出错误 一些文本由于计算器溢出错误 一些文本由于计算器溢出错误 一些文本由于计算器溢出错误 一些文本由于计算器溢出错误 一些文本由于计算器溢出错误一些文本由于计算器溢出错误
我有这样的关联数组:
[Array(0)]
0: Array(0)
date_time: "Thu Apr 08 2021 12:00:00 GMT+0300 (Москва, стандартное время)"
excursionshop_currency__id: "1"
excursionshop_timetable__date_time: "2021-04-08 12:00"
excursionshop_timetable__excursionshop_excursionlanguages_id: "1"
excursionshop_timetable__id: 1
excursionshop_timetable__price: "1"
excursionshop_timetable__price_child: ""
excursionshop_timetable__price_foreigner: ""
excursionshop_timetable__price_retiree: ""
excursionshop_timetable__price_schoolchild: ""
excursionshop_timetable__price_student: ""
excursionshop_timetable__price_veteran: ""
excursionshop_timetable__seat_limit: "1"
length: 0
__proto__: Array(0)
length: 1
__proto__: Array(0)
或
[Array(0)]
0: [excursionshop_timetable__price: "1", excursionshop_timetable__price_student: "", excursionshop_timetable__price_schoolchild: "", excursionshop_timetable__price_child: "", excursionshop_timetable__price_retiree: "", …]
length: 1
__proto__: Array(0)
我想要得到
[Array(0)]
0: {'excursionshop_timetable__price': "1", 'excursionshop_timetable__price_student': "", 'excursionshop_timetable__price_schoolchild': "", 'excursionshop_timetable__price_child': "", 'excursionshop_timetable__price_retiree': "", …}
length: 1
__proto__: Array(0)
答案 0 :(得分:1)
看来您在这里拥有的实际上已经是一个对象。 JavaScript 不支持关联数组。请参阅我对相关问题 here 的回答。
您正在处理的是一个具有非数字属性的数组,这些属性本质上是作为数组所属对象的属性添加的,而不是数组的索引。这就是为什么你的数组长度为零。如果需要,您实际上可以继续将数组原样用作对象,但是如果您想删除其不必要的数组方法并将其用作普通对象,我们可以遍历属于该数组的键,然后使用数组 reduce()
方法返回标准 JS 对象中的所有键/值对,如下所示:
reduce()
const array = [];
array["date_time"] = "Thu Apr 08 2021 12:00:00 GMT+0300 (Москва, стандартное время)";
array["excursionshop_currency__id"] = "1";
array["excursionshop_timetable__date_time"] = "2021-04-08 12:00";
array["excursionshop_timetable__excursionshop_excursionlanguages_id"] = "1";
array["excursionshop_timetable__id"] = 1;
array["excursionshop_timetable__price"] = "1";
array["excursionshop_timetable__price_child"] = "";
array["excursionshop_timetable__price_foreigner"] = "";
array["excursionshop_timetable__price_retiree"] = "";
array["excursionshop_timetable__price_schoolchild"] = "";
array["excursionshop_timetable__price_student"] = "";
array["excursionshop_timetable__price_veteran"] = "";
array["excursionshop_timetable__seat_limit"] = "1";
console.log(array); // -> []
const convertArrObj2Obj = arr => Object.keys(arr).reduce((a,c) => (a[c] = arr[c], a), {});
const object = convertArrObj2Obj(array);
console.log(object);
根据 Thomas 在评论中的建议,您还可以使用扩展语法来实现这一点,这要容易得多。只需确保检查浏览器对对象扩展语法的支持。
const array = [];
array["date_time"] = "Thu Apr 08 2021 12:00:00 GMT+0300 (Москва, стандартное время)";
array["excursionshop_currency__id"] = "1";
array["excursionshop_timetable__date_time"] = "2021-04-08 12:00";
array["excursionshop_timetable__excursionshop_excursionlanguages_id"] = "1";
array["excursionshop_timetable__id"] = 1;
array["excursionshop_timetable__price"] = "1";
array["excursionshop_timetable__price_child"] = "";
array["excursionshop_timetable__price_foreigner"] = "";
array["excursionshop_timetable__price_retiree"] = "";
array["excursionshop_timetable__price_schoolchild"] = "";
array["excursionshop_timetable__price_student"] = "";
array["excursionshop_timetable__price_veteran"] = "";
array["excursionshop_timetable__seat_limit"] = "1";
console.log(array); // -> []
const convertArrObj2Obj = arr => ({...arr});
const object = convertArrObj2Obj(array);
console.log(object);