3 回答

TA贡献1869条经验 获得超4个赞
只需再次应用相同的技巧。代替:
variations:p.variationsEN
和:
variations:(p.variationsEN || []).map(q => ({ value: q.valueEN }))
另外|| []
是处理源对象中不存在该属性的情况。在这种情况下,会为其生成一个空数组。

TA贡献1853条经验 获得超6个赞
您可以对重命名属性的对象采用递归方法并构建新对象或数组。
function rename(value) {
if (!value || typeof value !== 'object') return value;
if (Array.isArray(value)) return value.map(rename);
return Object.fromEntries(Object
.entries(value)
.map(([k, v]) => [keys[k] || k, rename(v)])
);
}
var keys = { canBook: 'quantity', variationsEN: 'variations', valueEN: 'value' },
prod = [{ price: 10, canBook: 1 }, { price: 11, canBook: 2, variationsEN: [{ valueEN: 1 }, { valueEN: 2 }] }],
result = rename(prod);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

TA贡献1798条经验 获得超7个赞
如果它确实是 JSON(如您的标签所示),例如您从服务器获取它作为字符串,您可以使用 reviver函数,例如:
var prod = JSON.parse(prodJSON, function (k, v) {
if (k === "canBook") {
this["quantity"] = v
} else {
return v
}
});
(当然,如果您从 JS 对象而不是 JSON 字符串开始,您总是可以进行字符串化,但在这种情况下,这将是一种矫枉过正)
添加回答
举报