JS,jQuery,给数组添加不同的键值
由于项目需要,遇到了服务器返回过来的数据是没有键值的数组,所以要进行处理,这就写了以下的这个demo
上面服务器返回的数据
要把它改成每组都带有键值的,而且键值就在第一个值里面,
已知第一个值的键是不同的,第二个键是sourse
// demo没有服务器,就手动写一下原始数组
var arr = [
["imsi:123456666", "备注2021年1月7日18:01:11"],
["imsi:23344343243", "备注2021年1月7日18:00:44"],
["msisdn:43243243243", "备注2021年1月7日18:00:44"],
["imei:4324325657", "备注2021年1月7日18:00:44"]
]
console.log(arr)
var res = []
//做个循环,一个个判断一下
for (var i = 0; i < arr.length; i++) {
//将每一个数组的第一个值取出来,冒号前面是键值所以这边要拆分
var type = arr[i][0].split(':')
//拆分之后,写成带键值的数组,键值不同所以要判断处理下
//不需要判断和拆分的话直接可以输出
if (type[0] == 'msisdn') {
var listdata = {
msisdn: type[1],
sourse: arr[i][1],
};
} else if (type[0] == 'imei') {
var listdata = {
imei: type[1],
sourse: arr[i][1],
};
} else if (type[0] == 'imsi') {
var listdata = {
imsi: type[1],
sourse: arr[i][1],
};
} else if (type[0] == 'mac') {
var listdata = {
mac: type[1],
sourse: arr[i][1],
};
}
//处理完放进准备好的空数组
res.push(listdata)
}
//循环完毕就完成了
console.log(res)
处理完成,看看输出结果
这样取值就会方便很多
反向操作一下,如果上传服务器只需要两个值,不带键的话,处理就比较简单
//反向处理一下
//如果传到服务器的值需要把键和值合并处理的话,就用以下方法
var newarr = [{ msisdn: "12344555", source: "备注2021年1月7日18:01:11" }
, { msisdn: "2313132", source: "备注2021年1月7日18:00:44" }
, { msisdn: "4234243242", source: "备注2021年1月7日18:00:44" }
, { msisdn: "3131231233", source: "注2021年1月7日18:00:44" }]
//先取出键值
var aaa = Object.keys(newarr[0])[0]
//再拿对键对应的值
var bbb = newarr[0][Object.keys(newarr[0])[0]]
//合并成新的字符串
var ccc = aaa + ":" + bbb
//直接单行写法
//var ccc = Object.keys(newarr[0])[0] + ':' + newarr[0][Object.keys(newarr[0])[0]]
//单个输出看看
console.log("aaa= "+aaa)
console.log("bbb= "+bbb)
console.log("ccc= "+ccc)
//全部处理的话就写一个循环
var nRes=[]
for (var i = 0; i < newarr.length; i++) {
var ccc = Object.keys(newarr[i])[0] + ':' + newarr[i][Object.keys(newarr[i])[0]]
//数组第二个值的键是统一的就不处理了,直接放
var ddd = newarr[i].source
var listdata = [ccc, ddd]
nRes.push(listdata)
}
//输出看看
console.log(nRes)
单个输出是这样的
可以看到每个数组的键和值都单独取出来了,然后就普通的合并起来
循环效果输出预览,这样就变回一开始拿到的数组了
希望能帮到大家快速完成工作吧:-D