zhangnaisong
2023-08-05 24d66c8d82b628a06e93dbb1abfea2049b3d45ab
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
32
33
34
35
36
37
38
39
'use strict';
 
var test = require('tape');
var traverse = require('../');
 
test('siblings', function (t) {
    var obj = { a: 1, b: 2, c: [4, 5, 6] };
 
    var res = traverse(obj).reduce(function (acc) {
        /* eslint no-param-reassign: 0 */
        var p = '/' + this.path.join('/');
        if (this.parent) {
            acc[p] = {
                siblings: this.parent.keys,
                key: this.key,
                index: this.parent.keys.indexOf(this.key),
            };
        } else {
            acc[p] = {
                siblings: [],
                key: this.key,
                index: -1,
            };
        }
        return acc;
    }, {});
 
    t.same(res, {
        '/': { siblings: [], key: undefined, index: -1 },
        '/a': { siblings: ['a', 'b', 'c'], key: 'a', index: 0 },
        '/b': { siblings: ['a', 'b', 'c'], key: 'b', index: 1 },
        '/c': { siblings: ['a', 'b', 'c'], key: 'c', index: 2 },
        '/c/0': { siblings: ['0', '1', '2'], key: '0', index: 0 },
        '/c/1': { siblings: ['0', '1', '2'], key: '1', index: 1 },
        '/c/2': { siblings: ['0', '1', '2'], key: '2', index: 2 },
    });
 
    t.end();
});