Javascript lodash.each和.trim忽略数组元素?
我正试图整合一些演示lodash功能,但我遇到了一些奇怪的行为 我有一个汽车数组,加上一些其他非字符串元素。我想把数组中的每个元素从cars数组中移除,检查它是否是字符串,如果是,删掉所有尾随的空格,添加一个“s”,并将其放入pluralCars数组中 我在一个角度控制器中执行此操作,并在视图中打印出阵列Javascript lodash.each和.trim忽略数组元素?,javascript,angularjs,lodash,Javascript,Angularjs,Lodash,我正试图整合一些演示lodash功能,但我遇到了一些奇怪的行为 我有一个汽车数组,加上一些其他非字符串元素。我想把数组中的每个元素从cars数组中移除,检查它是否是字符串,如果是,删掉所有尾随的空格,添加一个“s”,并将其放入pluralCars数组中 我在一个角度控制器中执行此操作,并在视图中打印出阵列 vm.cars = ['Saab ', 'Volvo', 'BMW ', 'Ford', 'Chevrolet ', 'Toyota', 'Honda', 'BMW', 45, true, f
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}}的输出为:
“{{pluralCars}}}”的输出是:
["Saab s","BMW s","Chevrolet s","Hondas"]
请注意,不带尾随空格的沃尔沃、福特、丰田和宝马并没有从cars数组中提取,而是被多重化并添加到pluralCars数组中
然后被拉的绳子没有被修剪空白 字符串是不可变的,不能更改 确实返回一个新字符串,但您只是在丢弃该结果。你需要使用
car = lodash.trim(car);
除此之外,看起来您应该将代码简化为
vm.pluralCars = lodash.map(lodash.filter(vm.cars, lodash.isString), function(car) {
return lodash.trim(car) + 's';
});
没有任何u.pull-您不想修改vm.cars,当然也不想在迭代时删除项目,因为这将导致跳过一些。如果还要查找非字符串值数组,则可以使用而不是筛选器。字符串是不可变的,不能更改 确实返回一个新字符串,但您只是在丢弃该结果。你需要使用
car = lodash.trim(car);
除此之外,看起来您应该将代码简化为
vm.pluralCars = lodash.map(lodash.filter(vm.cars, lodash.isString), function(car) {
return lodash.trim(car) + 's';
});
没有任何u.pull-您不想修改vm.cars,当然也不想在迭代时删除项目,因为这将导致跳过一些。如果您也在寻找非字符串值的数组,可以使用它来代替过滤器。就是这样做的。我感谢你的帮助;console.logcar,vm.cars;在每个循环中,都会清楚地说明为什么缺少一些值。这就解决了问题。我感谢你的帮助;console.logcar,vm.cars;在每个循环中,都会清楚地说明为什么缺少一些值。