javascript – 通过数组迭代设置对象键 – 值对
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 通过数组迭代设置对象键 – 值对,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2519字,纯文字阅读大概需要4分钟。
内容图文
![javascript – 通过数组迭代设置对象键 – 值对](/upload/InfoBanner/zyjiaocheng/806/bcf5c8451b3c418497f262c096c125d6.jpg)
我试图通过使用for循环创建以下数组.但是,我的结果是一个长度为24的数组,其中的所有对象变为{key:’23’,text:’12:30′,value:’12:30′},而不是逐个迭代.任何人都可以向我解释为什么每次迭代都会覆盖前一次迭代?
const timeOptions = [
{ key: '0', text: '1:00', value: '1:00' },
{ key: '1', text: '1:30', value: '1:30' },
{ key: '2', text: '2:00', value: '2:00' },
{ key: '3', text: '2:30', value: '2:30' },
{ key: '4', text: '3:00', value: '3:00' },
{ key: '5', text: '3:30', value: '3:30' },
{ key: '6', text: '4:00', value: '4:00' },
{ key: '7', text: '4:30', value: '4:30' },
{ key: '8', text: '5:00', value: '5:00' },
{ key: '9', text: '5:30', value: '5:30' },
{ key: '10', text: '6:00', value: '6:00' },
{ key: '11', text: '6:30', value: '6:30' },
{ key: '12', text: '7:00', value: '7:00' },
{ key: '13', text: '7:30', value: '7:30' },
{ key: '14', text: '8:00', value: '8:00' },
{ key: '15', text: '8:30', value: '8:30' },
{ key: '16', text: '9:00', value: '9:00' },
{ key: '17', text: '9:30', value: '9:30' },
{ key: '18', text: '10:00', value: '10:00' },
{ key: '19', text: '10:30', value: '10:30' },
{ key: '20', text: '11:00', value: '11:00' },
{ key: '21', text: '11:30', value: '11:30' },
{ key: '22', text: '12:00', value: '12:00' },
{ key: '23', text: '12:30', value: '12:30' },
];
这是我写的功能:
var array = Array(24).fill({});
array[0] = { key: '0', text: '1:00', value: '1:00' };
function transform(arr) {
for (var i = 0; i < arr.length; i++) {
arr[i].key = i.toString();
if (i % 2 === 0 && i !== 0) {
arr[i].text = Number(arr[i - 2].text.split(':')[0]) + 1 + ':00';
arr[i].value = arr[i].text;
} else if (i % 2 !== 0) {
arr[i].text = arr[i - 1].text.split(':')[0] + ':30';
arr[i].value = arr[i].text;
}
}
return arr;
}
transform(array);
解决方法:
你的问题是第一行:
var array = Array(24).fill({});
基本上你要说的是用一堆相同的空对象创建一个数组.所以,当你改变一个时,它会改变所有其他的.
您可以这样想,因为数组中的每个索引都指向存储该空对象{}的相同内存位置.
这是因为javascript中的数组被认为是可变的.
快速解决此问题的方法是使用for循环手动填充数组.请查看代码片段以获取一个工作示例:
var array = [];
for(var i = 0; i < 24; i++) {
array.push({});
}
array[0] = { key: '0', text: '1:00', value: '1:00' };
function transform(arr) {
for (var i = 0; i < arr.length; i++) {
arr[i].key = i.toString();
if (i % 2 === 0 && i !== 0) {
arr[i].text = Number(arr[i - 2].text.split(':')[0]) + 1 + ':00';
arr[i].value = arr[i].text;
} else if (i % 2 !== 0) {
arr[i].text = arr[i - 1].text.split(':')[0] + ':30';
arr[i].value = arr[i].text;
}
}
return arr;
}
console.log(transform(array));
内容总结
以上是互联网集市为您收集整理的javascript – 通过数组迭代设置对象键 – 值对全部内容,希望文章能够帮你解决javascript – 通过数组迭代设置对象键 – 值对所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。