我试图搜索名为" SerialNumber"在对象数组中,用" SNo"
替换var object = [{
"SerialNumber": 001,
"name": "user1"
}, {
"SerialNumber": 002,
"name": "user2"
}];
if ('SerialNumber' in object[0]) {
object.forEach(function (key) {
key.SNo = key.SerialNumber;
delete key.SerialNumber;
});
}
console.log(object)
如果object = []
,则上述代码无效。是否有更好的方法(具有良好的性能)来搜索对象数组中的键并用新键替换。
答案 0 :(得分:4)
您可以使用Array#forEach
并检查密钥是否存在。
function replace(oldKey, newKey, array) {
array.forEach(function (o) {
if (oldKey in o) {
o[newKey] = o[oldKey];
delete o[oldKey];
}
});
}
var object = [{ "SerialNumber": '001', "name": "user1" }, { "SerialNumber": '002', "name": "user2" }];
replace('SerialNumber', 'SNo', object);
console.log(object);

答案 1 :(得分:2)
看起来好像您切换了if
和foreach
。 object
是一个数组,因此您可以通过项目,并检查您的状况。
var object = [
{
"SerialNumber": 001,
"name": "user1"
},
{
"SerialNumber": 002,
"name": "user2"
}
];
object.forEach(function (item) {
if (item.SerialNumber !== undefined) {
item.SNo = item.SerialNumber;
delete item.SerialNumber;
}
});
答案 2 :(得分:1)
尝试这样的事情
object.forEach(function(obj){
if(obj.hasOwnProperty("SerialNumber")){
obj["SNo"] = obj["SerialNumber"];
delete obj["SerialNumber"];
}
});
答案 3 :(得分:0)
您必须将if条件移动到forEach回调中。 否则,它只会查找第一个元素的SerialNumber,如果它不存在则会崩溃。
var array = [{
"SerialNumber": 001,
"name": "user1"
}, {
"SerialNumber": 002,
"name": "user2"
}];
array.forEach(function (element) {
if(element.SerialNumber) {
element.SNo = element.SerialNumber;
delete element.SerialNumber;
}
});
console.log(array);
答案 4 :(得分:0)
从数组中获取对象后检查密钥。
object.forEach(function (key) {
if ('SerialNumber' in key) {
key.SNo = key.SerialNumber;
delete key.SerialNumber;
}
});
如果对象没有元素,它将起作用。
答案 5 :(得分:0)
如果要更改数组中对象的键,则最好将数组元素映射到自身。
这是一个例子。
var object = [{
"SerialNumber": 001,
"name": "user1"
}, {
"SerialNumber": 002,
"name": "user2"
}];
object = object.map(function(value) {
var tempObj = value;
if (tempObj.SerialNumber) {
tempObj.SNo = tempObj.SerialNumber;
delete tempObj.SerialNumber;
}
return tempObj;
});
console.log(object);