如何在JavaScript中以相同的顺序执行foreach循环?

时间:2017-05-03 11:25:29

标签: javascript loops foreach

我从客户端获取数组

var arr = [{'url':'www.google.com'},{'url':'www.fb.com'}]

我想将其分配为字符串

var urls = www.google.com,www.facebook.com

我做了但是我的索引反转如下

var urls = www.facebook.com,www.google.com

我的代码:

duis.arr(function(v,i){
   urls = v.url + ','+urls;
}

有人可以建议帮忙吗?

4 个答案:

答案 0 :(得分:4)

您可以使用mapjoin

var arr = [{'url':'www.google.com'},{'url':'www.fb.com'}];
var urls = arr.map(url => url.url).join(',');
console.log(urls);

根据评论更新了新要求:

var arr = [{'url_name':'a','name':'b'},{'url_name':'c','name':'a'}];
var urls = arr.map(url => url.url_name).reverse().join(',');
console.log(urls);

答案 1 :(得分:1)

只需反转现有的连接并处理特殊的第一次迭代(我不知道arr方法是什么,但是你说你得到了你想要的结果,所以)

duis.arr(function(v,i){ // Whatever `arr` is -- I would have expected `forEach`
   urls = urls ? urls + ',' + v.url : v.url;
});

或者您可以使用reduce

urls = duis.reduce(function(p, v) {
    return p ? p + ',' + v.url : v.url;
}, '');

示例:

var duis = [{
  'url': 'www.google.com'
}, {
  'url': 'www.fb.com'
}];
var urls = duis.reduce(function(p, v) {
  return p ? p + ',' + v.url : v.url;
}, '');
console.log(urls);

如果你必须支持像IE8这样过时的浏览器(许多人仍然这样做),那么一个简单的for循环将是最好的:

var urls = duis[0].url;
for (var i = 1; i < duis.length; ++i) {
  urls += ',' + duis[i].url;
}

答案 2 :(得分:0)

使用 https://pypi.python.org/pypi/Pillow/2.1.0 map

 const arr = [{'url':'www.google.com'},{'url':'www.fb.com'}];
 const urls = arr.map(el => el.url).join(',')
 console.log(urls) // "www.google.com,www.fb.com"

join

答案 3 :(得分:0)

array_filter()$testArray = sort(array_filter(array_unique($testArray))); 可能是一个很好的解决方案,但为了获得更好的性能,只需循环数组:

map