gpt4 book ai didi

javascript - (AngularJS)全局替换数组中值的最有效方法

转载 作者:行者123 更新时间:2023-11-29 19:03:58 25 4
gpt4 key购买 nike

我想替换数组中的所有值,代码如下:

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的最有效方法吗?还有其他选择吗?请检查这里的 fiddle : 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 个选择:

  • 当您的标志更加动态并且变化非常频繁时,示例 1 更有用。
  • 示例 2 在您的标志在 1 个循环中只有 1 个值的情况下更有用。类似于 A/B 测试。由于它在一个周期内始终保持不变,因此再次计算是没有意义的。只需保存一个处理后的值。这也会将 url 封装在范围内,并且在外部不可用,因此增加了安全性。
// 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;

关于javascript - (AngularJS)全局替换数组中值的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44428369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com