我有以下数组:
var fruits = ["orange","orange,apple","apple,orange,pear"];
我正在努力实现以下目标:
fruits = ["orange","apple","pear"]
任何建议,谢谢!
答案 0 :(得分:4)
这是一种方法:
fruits = fruits.reduce(function (p, c) {
return p.concat(c.split(","));
}, []).filter(function(e, i, a) {
return a.indexOf(e) === i;
});
(编辑:请注意,IE8或更早版本不支持.filter()
和.reduce()
,但如果您需要支持较旧的IE,则可以使用填充程序。)
答案 1 :(得分:0)
没有现成的方法来实现这一目标。
你可以做的是使用像词典一样的关联数组。遍历列表,读取每个元素,将其拆分并将其存储在关联数组中,其中键作为水果名称,值也作为水果名称。类似的东西:
fruits["orange"] = "orange";
如果fruits []中已经存在该值,则只会被覆盖。最后,你将拥有尽可能多的水果[]钥匙和独特的水果。
编辑:
var fruits = ["orange", "orange,apple", "apple,orange,pear"];
var a = fruits.toString().split(",");
var obj = new Object();
for (var i = 0; i < a.length; i++) {
obj[a[i]] = a[i];
}
for (var key in obj) {
alert(key);
}
答案 2 :(得分:0)
会给你预期的结果。
var fruits = ["orange","orange,apple","apple,orange,pear"];
var uniqueVal = [];
$.each(fruits, function(i, el){
var splitVals = el.split(',');
for(var i=0; i<splitVals.length; i++ ){
if($.inArray(splitVals[i], uniqueVal) === -1) uniqueVal.push(splitVals[i]);
}
});
答案 3 :(得分:0)
试试这个
var fruits = ["orange","orange,apple","apple,orange,pear"];
如果你想拆分第二个元素并连接字符串
fruits.concat(fruits[1].split(","))
或者你想要所有的元素拆分和连接然后uniq
var new_fruits = [];
$.each(fruits, function(i, el){
fruits.concat(fruits[i].split(","))
if($.inArray(el, new_fruits) === -1) new_fruits.push(el);
});
_.uniq(fruits, false)
答案 4 :(得分:0)
这应该有效:
var fruits = ["orange","orange,apple","apple,orange,pear"];
var out = [];
$(fruits).each(function(i) {
var s = fruits[i].split(',');
$(s).each(function(i) {
if($.inArray(s[i], out)===-1)
{
out.push(s[i]);
}
});
});
JSFIddle:http://jsfiddle.net/rRC65/
答案 5 :(得分:0)
这使用一个对象来捕获元素,然后返回它的键。而且不需要垫片。
function remdupes(arr) {
var obj = {}, out = [];
for (var i = 0, l = arr.length; i < l; i++) {
var el = arr[i].split(',');
for (var ii = 0, ll = el.length; ii < ll; ii++) {
obj[el[i]] = true;
}
}
for (var key in obj) { out.push(key); }
return out;
}
请注意最后几行:
for (var key in obj) { out.push(key); };
return out
可以改写:
return Object.keys(obj);
答案 6 :(得分:0)
你可以这样做(eliminateDuplicates):
fruits = fruits.join(','); // "orange,orange,apple,apple,orange,pear"
fruits = fruits.split(','); // ["orange", "orange", "apple", "apple", "orange", "pear"]
fruits = eliminateDuplicates(fruits); // ["orange", "apple", "pear"]