我想替换数组中的所有值,代码如下:
var jsonImg = [
{"url":"https://example.amazonaws.com/images-lib/1496846856-Retina 01.jpg"},
{"url":"https://example.amazonaws.com/images-lib/1496846856-Retina 02.jpg"},
{"url":"https://example.amazonaws.com/images-lib/1496846856-Retina 03.jpg"}
];
var imgUrl = JSON.stringify(jsonImg);
var oldString = imgUrl;
var newString = oldString.replace(/https:\/\/example.amazonaws.com\/images-lib\//g,"cordova.url/");
$scope.Images = JSON.parse(newString);
但是我认为 JSON.Stringfly 和 JSON.Parse 在这里有点多余,您认为这是替换所有值 JSON.Stringfly 和 JSON.Parse 的最有效方法吗?有没有其他替代方法可以做到这一点?请在这里检查小提琴:https : //jsfiddle.net/dedenbangkit/zu7utr6a/3/
根据我的理解,在所有图像 url 中重复 cdn 路径是多余的。您应该创建另一个变量来保存此路径,当您需要使用它时,只需连接两个字符串。这样,您可以轻松更改cdn路径,而无需处理。
样本
出于演示目的,我使用了Math.random
,但您可以输入您的条件。
function ImgCtrl($scope) {
var s3 = "https://s3-ap-southeast-1.amazonaws.com/publixx-statics/images-lib/";
var cordava = "cordova.url/";
var urls = [{
"url": "1496846856-Retina 01.jpg"
}, {
"url": "1496846856-Retina 02.jpg"
}, {
"url": "1496846856-Retina 03.jpg"
}]
$scope.path = Math.floor(Math.random() * 100) % 2 === 0 ? s3 : cordava;
$scope.Images = urls;
console.log($scope.Images[0].url)
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script>
<div ng-app>
<div ng-controller="ImgCtrl">
<ul>
<li ng-repeat="Image in Images">
{{path}}{{Image.url}}
</li>
</ul>
</div>
</div>
根据我们的讨论,您可以有 2 个选择:
// Sample 1
var flag = Math.floor(Math.random() * 100) % 2 === 0;
function getImagePath(image) {
var s3 = "https://s3-ap-southeast-1.amazonaws.com/publixx-statics/images-lib/";
var cordava = "cordova.url/";
return (flag ? s3 : cordava) + image;
}
// Usage:
var url = getImagePath(imageUrl)
// Sample 2
var path = (function() {
var s3 = "https://s3-ap-southeast-1.amazonaws.com/publixx-statics/images-lib/";
var cordava = "cordova.url/";
return flag ? s3 : cordava;
})()
var url = path + imageUrl;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句