关于javascript:如何合并相同的值

How to merge the same value

本问题已经有最佳答案,请猛点这里访问。

我需要帮助。我想把这12,12,12,13,13,14,14,14,15,15合并成12,13,14,15。到目前为止,我有这个代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 if ($('#branchName' + branchList.branch).length == 0) {
                    $('#zzz').append(
                        '<span>' + branchList.branch + '</span>' +
                            '<ul id="branchName' + branchList.branch + '">' +
                            '
<li>
'
+
                            '<span id="combo' + branchList.combo + '">' + branchList.combo + '</span>' +
                            '
</li>
'
+
                            '
</ul>
'
);
                    if ($('#combo' + branchList.combo).length == 0) {
                        //if exists go to else
                    } else {
                        //append combo
                    }
                }

                else {
                    $('#branchName' + branchList.branch).append(
                        '
<li>
'
+
                            '<span id="combo' + branchList.combo + '">' + branchList.combo + '</span>' +
                            '
</li>
'
);          
                }

更新:我已经将if-else上的数字合并到了现有的数字上。现在我的问题是我应该在哪里为我的组合再次放置下一个if语句。


尝试筛选属性。假设数组中有这些值

1
2
3
4
arr=[1,1,1,2,3,4,5];
new_arr = arr.filter(function(item, pos) {
    return arr.indexOf(item) === pos;
});

这个过滤器接受一个回调函数,并对数组的每个元素(如.map)调用它,最多接受三个参数:元素的值(来自数组)、索引和数组本身。

这背后的想法是,取一个元素,然后检查(那个元素)的索引是否等于元素的位置。

演练。

step 1: indexOf(1) = 0 and pos = 0, indexOf(1) === pos // true so the element is pushed in the new_arr
step 2: indexOf(1) = 0 and pos = 1, // condition false, so discard.

等等。。

允许和丢弃的属性可能来自duck类型


可以导入库下划线在下划线中,有一个简单的函数来执行此操作:

1
2
_.union([1, 2, 3], [101, 2, 1, 10], [2, 1]);
=> [1, 2, 3, 101, 10]