我有一个字符串,需要作为代码进行评估。但是如何实现这一点,以便可以使用此字符串搜索数组?
插入到函数中的值是预定义的。所以我只能更改功能。
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"
}
答案 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);