如何使用字符串在数组中搜索

时间:2019-02-01 12:48:02

标签: javascript arrays string object

我有一个字符串,需要作为代码进行评估。但是如何实现这一点,以便可以使用此字符串搜索数组?

插入到函数中的值是预定义的。所以我只能更改功能。

function setIn(a, b, c)
{
    console.log('Debug session 603 started')
    var x = ""

    b.forEach(function(element, i) {
        x = x + "['" + element + "']"
    });

    console.log(x)
    a[x] = c
    return a
}

setIn(
    {
        "a": "asdf", 
        "b": {
            "b1": "wrong",
            "b2": "asdf"
        }
    },
    ['b', 'b1'],
    "good"
)

预期:

{ 
    "a": "asdf",
    "b": {
        "b1": "good",
        "b2": "asdf"
    }
}

我当前的结果:

{ 
    "a": "asdf",
    "b": {
        "b1": "wrong",
        "b2": "asdf"
    },
    "['b']['b1']": "good"
}

2 个答案:

答案 0 :(得分:0)

一种解决方案是:

import pandas as pd

df = pd.read_csv(open('duplicate1.csv'),'Sheet1',sep=',',delimiter=None, index_col=0)

df.to_excel('duplicateexcel.xlsx',encoding='utf-8')

这可能不是最漂亮的,但它似乎可行。

答案 1 :(得分:0)

当您访问forEach数组的最后一个key时,实际上可以在b循环内设置新值。否则,您可以在对象内部深入一层。

function setIn(a, b, c)
{
    console.log('Debug session 603 started');
    var x;

    b.forEach(function(element, i)
    {
        // If we are accessing the last key, assign c to it.
        // Else, access the new key.

        if (i === b.length - 1)
            (x || a)[element] = c;
        else
            x = (x || a)[element];
    });

    return a;
}

let res = setIn(
    {
      "a": "asdf", 
      "b": {"b1": "wrong", "b2": "asdf"}
    },
    ['b', 'b1'],
    "good"
);

console.log(res);