lodash .each 和 .trim 忽略数组元素?
lodash .each and .trim ignoring array elements?
我正在尝试组合一些演示 lodash 功能,但我 运行 遇到了一些奇怪的行为。
我有一个汽车数组,加上一些其他的非字符串元素。我想取出数组的每个元素并将其从汽车数组中删除,检查它是否是一个字符串,如果是,trim 关闭任何尾随白色 space,添加一个 's' 并将其推入 pluralCars 数组。
我在 angular 控制器中执行此操作并在视图中打印数组。
vm.cars = ['Saab ', 'Volvo', 'BMW ', 'Ford', 'Chevrolet ', 'Toyota', 'Honda', 'BMW', 45, true, false, null];
vm.pluralCars = [];
lodash.each(vm.cars, function(car) {
if (lodash.isString(car)) {
lodash.pull(vm.cars, car);
lodash.trim(car);
car = car + 's';
vm.pluralCars.push(car);
}
});
{{cars}}
的输出是:
["Volvo","Ford","Toyota","BMW",45,true,false,null]
`{{pluralCars}}' 的输出是:
["Saab s","BMW s","Chevrolet s","Hondas"]
请注意,沃尔沃、福特、丰田和宝马(w/o 尾随的白色 space)没有从 cars 数组中提取、复数化并添加到 pluralCars 数组中。
然后被拉的琴弦没有白色space trimmed。
字符串是不可变的,无法更改。
_.trim
做 return 一个 new 字符串,但你只是扔掉了那个结果。您需要使用
car = lodash.trim(car);
除此之外,您似乎应该将代码简化为
vm.pluralCars = lodash.map(lodash.filter(vm.cars, lodash.isString), function(car) {
return lodash.trim(car) + 's';
});
没有任何 _.pull
ing - 你不想修改 vm.cars
,你当然不想在迭代它时删除项目,因为这会导致跳过一些。如果您也在寻找非字符串值的数组,您可以使用 _.partition
而不是过滤器。
我正在尝试组合一些演示 lodash 功能,但我 运行 遇到了一些奇怪的行为。
我有一个汽车数组,加上一些其他的非字符串元素。我想取出数组的每个元素并将其从汽车数组中删除,检查它是否是一个字符串,如果是,trim 关闭任何尾随白色 space,添加一个 's' 并将其推入 pluralCars 数组。
我在 angular 控制器中执行此操作并在视图中打印数组。
vm.cars = ['Saab ', 'Volvo', 'BMW ', 'Ford', 'Chevrolet ', 'Toyota', 'Honda', 'BMW', 45, true, false, null];
vm.pluralCars = [];
lodash.each(vm.cars, function(car) {
if (lodash.isString(car)) {
lodash.pull(vm.cars, car);
lodash.trim(car);
car = car + 's';
vm.pluralCars.push(car);
}
});
{{cars}}
的输出是:
["Volvo","Ford","Toyota","BMW",45,true,false,null]
`{{pluralCars}}' 的输出是:
["Saab s","BMW s","Chevrolet s","Hondas"]
请注意,沃尔沃、福特、丰田和宝马(w/o 尾随的白色 space)没有从 cars 数组中提取、复数化并添加到 pluralCars 数组中。
然后被拉的琴弦没有白色space trimmed。
字符串是不可变的,无法更改。
_.trim
做 return 一个 new 字符串,但你只是扔掉了那个结果。您需要使用
car = lodash.trim(car);
除此之外,您似乎应该将代码简化为
vm.pluralCars = lodash.map(lodash.filter(vm.cars, lodash.isString), function(car) {
return lodash.trim(car) + 's';
});
没有任何 _.pull
ing - 你不想修改 vm.cars
,你当然不想在迭代它时删除项目,因为这会导致跳过一些。如果您也在寻找非字符串值的数组,您可以使用 _.partition
而不是过滤器。