更改 Javascript 对象中的特定 name:value 对
Change specific name:value pair in Javascript object
我试图简单地编写一个函数,将我的 JS 对象中的 属性 值之一转换为整数 - 具体来说,将每个水果的权重 属性 从字符串 (" 200g") 到 int (200)
var basket = [
{
name: "apple",
weight: "200g",
type: "fruit"
},
{
name: "bananas",
weight: "90g",
type: "fruit"
},
];
我想写一个 fnc 将权重从 str 转换为 int,然后将整个东西保存为一个新的 JS 对象 - new_basket。
我不太确定如何在 JS 中构造函数,但我有这样的东西:
for(var i=0; i<basket.length; i++) {
new_basket = parseInt(basket.weight);
console.log(new_basket)
}
我看过 forEach 的示例,但它们会转换所有属性,而我只想转换所有权重。
提前致谢!
basket
是一个列表,因此您需要使用 []
运算符访问每个对象。您可以通过以下方式完成:
var basket = [
{
name: "apple",
weight: "200g",
type: "fruit"
},
{
name: "bananas",
weight: "90g",
type: "fruit"
},
];
for(var i=0; i<basket.length; i++) {
new_basket = parseInt(basket[i].weight);
console.log(new_basket)
}
var basket = [
{
name: "apple",
weight: "200g",
type: "fruit"
},
{
name: "bananas",
weight: "90g",
type: "fruit"
},
];
basket.forEach((data,i)=>{
data['weight']=Number(String(data['weight']).replace('g',''))
})
console.log(basket);
给你,希望这对你有帮助。如果是这样我很高兴!
basket.forEach((data,i)=>data['weight']=Number(String(data['weight']).replace('g','')));
在一行中,干净的代码对现有数组进行修改。
您需要使用 Object.assign
将新的 key/value 与原始对象合并,在新对象的内部。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
顺便说一句,使用高阶函数,如 map
可以使您的代码更具可读性并允许链接。 map
遍历一个数组,returns 一个新数组。它接受一个可以发生所有转换的回调。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
对于你的情况,你可以尝试这样的事情:
const newFruits = fruits.map(fruit => {
return Object.assign(fruit, { weight: parseInt(fruit.weight) })
})
函数循环遍历结果,然后使用Object.assign
将新的key/value与原始对象合并。
这是强制性的 ES6 [和 shorthand] 方法:
const newFruits = fruits.map(({weight, ...fruit}) => ({
...fruit,
weight: +weight
})
我试图简单地编写一个函数,将我的 JS 对象中的 属性 值之一转换为整数 - 具体来说,将每个水果的权重 属性 从字符串 (" 200g") 到 int (200)
var basket = [
{
name: "apple",
weight: "200g",
type: "fruit"
},
{
name: "bananas",
weight: "90g",
type: "fruit"
},
];
我想写一个 fnc 将权重从 str 转换为 int,然后将整个东西保存为一个新的 JS 对象 - new_basket。 我不太确定如何在 JS 中构造函数,但我有这样的东西:
for(var i=0; i<basket.length; i++) {
new_basket = parseInt(basket.weight);
console.log(new_basket)
}
我看过 forEach 的示例,但它们会转换所有属性,而我只想转换所有权重。 提前致谢!
basket
是一个列表,因此您需要使用 []
运算符访问每个对象。您可以通过以下方式完成:
var basket = [
{
name: "apple",
weight: "200g",
type: "fruit"
},
{
name: "bananas",
weight: "90g",
type: "fruit"
},
];
for(var i=0; i<basket.length; i++) {
new_basket = parseInt(basket[i].weight);
console.log(new_basket)
}
var basket = [
{
name: "apple",
weight: "200g",
type: "fruit"
},
{
name: "bananas",
weight: "90g",
type: "fruit"
},
];
basket.forEach((data,i)=>{
data['weight']=Number(String(data['weight']).replace('g',''))
})
console.log(basket);
给你,希望这对你有帮助。如果是这样我很高兴!
basket.forEach((data,i)=>data['weight']=Number(String(data['weight']).replace('g','')));
在一行中,干净的代码对现有数组进行修改。
您需要使用 Object.assign
将新的 key/value 与原始对象合并,在新对象的内部。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
顺便说一句,使用高阶函数,如 map
可以使您的代码更具可读性并允许链接。 map
遍历一个数组,returns 一个新数组。它接受一个可以发生所有转换的回调。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
对于你的情况,你可以尝试这样的事情:
const newFruits = fruits.map(fruit => {
return Object.assign(fruit, { weight: parseInt(fruit.weight) })
})
函数循环遍历结果,然后使用Object.assign
将新的key/value与原始对象合并。
这是强制性的 ES6 [和 shorthand] 方法:
const newFruits = fruits.map(({weight, ...fruit}) => ({
...fruit,
weight: +weight
})