javascript - 在将数据推入数组时,不按顺序添加
问题描述
在此处输入图像描述
我需要一个接一个地推送数据,但是在这里我要像上次添加的数组一样乱序添加到第一个。
for (var key in data[tabName + scoreBreakDown]) {
var values = data[tabName + scoreBreakDown][key];
var staticData = values[0];
var obj = [];
obj.push(staticData.CompanyName);
obj.push(staticData.Country_ORIG);
for (var value in values) {
if (addHeader) {
headersArray.push(values[value].AspectName);
weightArray.push(values[value].ScoreWeight);
}
obj.push(values[value].SPESGScore_ORIG);
}
addHeader = false;
dataArray.push(obj);
}
解决方案
您可以使用 array.map 映射一个数组并将其按顺序转换为一个新数组。
在这个例子中,我们只是将每个值乘以 3,但转换是任意的。
let loop = (arr) => {
return arr.map(item => {
return item*3
})
}
console.log(loop([1,2,3,4,5]))
如果你想以这种方式循环一个对象,你可以使用 Object.keys() 这将返回对象中键的数组。
let loop = (obj) => {
return Object.keys(obj).map(item => {
return `${item}: ${obj[item]}`
})
}
let obj = {
first_name:"John",
last_name:"Doe",
age:23
}
console.log(loop(obj))
因此,与其使用 for 循环和 if 语句来检查条件并在每次迭代后将数据推送到数组中,不如使用 Array.filter() 删除不想推送的条目,并将它们返回命令。
data = [
{header:true, value:"item1"},
{header:false, value:"item2"},
{header:true, value:"item3"},
]
let array = data.filter(item => {return item.header}).map(item => {
return item.value
})
console.log(array)
推荐阅读
- r - 使用反应数据集的模块内部的renderHighchart
- amazon-web-services - 如何创建自定义事件触发器以在创建新存储桶时调用 lambda?
- python - functionB的多线程线程直到function A的线程完成才开始,但是functionA的线程不等待functionB
- oracle - 不输入参数时忽略where子句中的日期范围参数
- python - ipywidgets 与 Jupyter Lab 1.0+ 版兼容?
- php - PHP密码验证,
- excel - 数据透视表中的条件格式
- ruby-on-rails - Rails 验证特定页面上的某些属性
- azure - 在 Azure 中托管 EventProcessorHost
- javascript - ComponenetMount 将字段添加到数组 React