根据接口返回数据中number属性值,对数据进行截取,并改变属性名.
下面是需要处理的数据
let data = {
value: [
{date: "2021-01", thumb: "1", index: "1"},
{date: "2021-02", thumb: "2", index: "2"},
{date: "2021-03", thumb: "3", index: "3"}
],
number: 2
}
一、根据number值对数据截取
var num = data.number;// 2
var arr = data.value.slice(0,num);
// [{date: "2021-01", thumb: "1", index: "1"},{date:"2021-02",thumb:"2", index: "2"}]
二、改变属性值
方法一:
var arr2 = JSON.stringify(arr).replace(/date/g, "begin_date").replace(/thumb/g, "sort");
console.log(arr2)
// [{"begin_date":"2021-01","sort":"1", index: "1"},{"begin_date":"2021-02","sort":"2", index: "2"}]
var arr3=JSON.parse(arr2)
console.log(arr3)
// [{begin_date:"2021-01",sort:"1", index: "1"},{begin_date:"2021-02",sort:"2", index: "2"}]
但是此方法会将键值都转换,需要保证【键名】和【值】不会有重复
方法二:
var key1 = 'begin_date'
var key2 = 'sort'
for (var i = 0; i < arr.length; i++) {
arr[i][key1] = arr[i].date
arr[i][key2] = arr[i].thumb
delete arr[i].date
delete arr[i].thumb
}
console.log('arr', arr)
// [{begin_date:"2021-01",sort:"1", index: "1"},{begin_date:"2021-02",sort:"2", index: "2"}]
方法三
const data1 = arr.map(item => {
return { begin-date: item.date, sort: item.thumb, index: item.index }
})
console.log('data1', data1)
// [{begin_date:"2021-01",sort:"1", index: "1"},{begin_date:"2021-02",sort:"2", index: "2"}]
不改变键值也不匹配部分键名只匹配你要改的键名
var aaa = [
{
Name:"test1Name",
type: "test",
},
{
Name:"test2",
model: "model2"
}
]
var copyTrans = function(obj, typeArr) {
let result;
let toString = Object.prototype.toString;
if(toString.call(obj) === '[object Array]'){
result = [];
for(let i = 0; i < obj.length; i++){
result[i] = copyTrans(obj[i], arguments[1])
}
}else if(toString.call(obj) === '[object Object]'){
result = {};
for (let _key in obj) {
if (obj.hasOwnProperty(_key)) {
let flag = 0, _value = null;
for (let j = 0; j < arguments[1].length; j ++) {
if (arguments[1][j].key === _key) {
flag = 1;
_value = arguments[1][j].value
}
}
if (flag)
result[_value] = copyTrans(obj[_key], arguments[1])
else
result[_key] = copyTrans(obj[_key], arguments[1])
}
}
}else{
return obj
}
return result
};
//将aaa对象中的type键改为chilren、model键改为chilren
console.log(copyTrans(aaa, [{ key: "type", value: "chilren" }, { key: "model", value: "chilren" }]));
函数第一个参数是要修改的对象,第二个参数传数组 key为要被改的属性名, value为改成的属性名。函数本身是一个深拷贝,通过对其每层中对象的“键”做匹配替换即实现了多层的“键”替换,另外这里如果传空数组此函数就是一个深拷贝。