Skip to content

Commit

Permalink
use filter map
Browse files Browse the repository at this point in the history
  • Loading branch information
n14little committed May 26, 2020
1 parent 235d629 commit fadb75c
Showing 1 changed file with 15 additions and 16 deletions.
31 changes: 15 additions & 16 deletions boa/src/builtins/json/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,17 +87,19 @@ pub fn stringify(_: &mut Value, args: &[Value], interpreter: &mut Interpreter) -
.as_object()
.map(|obj| {
let object_to_return = Value::new_object(None);
for (key, val) in obj.properties.iter().filter(|(_, v)|v.value.is_some()) {
for (key, val) in obj.properties.iter().filter_map(|(key, v)| {
if let Some(value) = &v.value {
Some((key, value))
} else {
None
}
}) {
let mut this_arg = object.clone();
object_to_return.set_property(
key.to_owned(),
Property::default().value(
interpreter
.call(
replacer,
&mut this_arg,
&[Value::string(key), Value::from(val.value.as_ref())],
)
.call(replacer, &mut this_arg, &[Value::string(key), val.clone()])
.expect("failed to get returned value from replacer function"),
),
);
Expand All @@ -108,16 +110,13 @@ pub fn stringify(_: &mut Value, args: &[Value], interpreter: &mut Interpreter) -
} else if replacer_as_object.kind == ObjectKind::Array {
let mut obj_to_return =
serde_json::Map::with_capacity(replacer_as_object.properties.len() - 1);
let fields = replacer_as_object
.properties
.keys()
.filter_map(|key| {
if key == "length" {
None
} else {
Some(replacer.get_field(key.to_string()))
}
});
let fields = replacer_as_object.properties.keys().filter_map(|key| {
if key == "length" {
None
} else {
Some(replacer.get_field(key.to_string()))
}
});
for field in fields {
if let Some(value) = object
.get_property(&field.to_string())
Expand Down

0 comments on commit fadb75c

Please sign in to comment.